ntfs数据流的复制

来源:互联网 发布:阿玛达数控折弯机编程 编辑:程序博客网 时间:2024/05/22 19:24

数据流文件不能使用CopyFile进行复制,但是可以变相使用ReadFile,WriteFile实现。

procedure CopyDataStream(strFileName,strNewFileName:string);
var
   hFile,hNewFile:Cardinal;
   dwLen,dwRet:DWORD;
   szBuf:array[0..102400] of char; //100K
   bRet:Boolean;
   dwSize:DWORD;
begin
     hFile := CreateFile(PChar(strFileName),GENERIC_ALL,FILE_SHARE_WRITE,nil,OPEN_ALWAYS,0,0);
     if hFile = INVALID_HANDLE_VALUE then
        exit;
     hNewFile := CreateFile(PChar(strNewFileName),GENERIC_ALL,FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0);
     if hNewFile = INVALID_HANDLE_VALUE then
     begin
         CloseHandle(hFile);
         exit;
     end;

     repeat
         bRet := ReadFile(hFile,szBuf,102400,dwRet,nil);
         if (bRet = False) or (dwRet = 0) then
            Break;

         WriteFile(hNewFile,szBuf,dwRet,dwLen,0);
     until false;

     CloseHandle(hFile);
     CloseHandle(hNewFile);
end;

原创粉丝点击