文件拷贝中实现文件资源的保护

文件拷贝中实现文件资源的保护: 
 
  procedure CopyFile(const FileName, DestName: TFileName);
  var
  CopyBuffer: Pointer;
  TimeStamp, BytesCopied: Longint;
  Source, Dest: Integer;
  Destination: TFileName;
  const
  ChunkSize: Longint = 8192;
  begin
  Destination := ExpandFileName(DestName);
  if HasAttr(Destination, faDirectory) then
  Destination := Destination + '\' + ExtractFileName(FileName);
  TimeStamp := FileAge(FileName);
  GetMem(CopyBuffer, ChunkSize);
  try
  Source := FileOpen(FileName, fmShareDenyWrite);
  if Source < 0 then
  raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));
  try
  Dest := FileCreate(Destination);
  if Dest < 0 then
  raise EFCreateError.Create(FmtLoadStr(SFCreateError, Destination]));
    try
    repeat
    BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize);
    if BytesCopied > 0 then
    FileWrite(Dest, CopyBuffer^, BytesCopied);
    until BytesCopied < ChunkSize;
    finally
    FileClose(Dest);
    end;
    finally
    FileClose(Source);
    end;
    finally
    FreeMem(CopyBuffer, ChunkSize);
    end;
    end;
posted @ 2004-07-03 22:48  Delphi编程驿站,网络交流的空间站!  阅读(433)  评论(0)    收藏  举报