如何复制具有取消复制功能的文件
本文关键字:复制 取消 功能 文件 何复制 | 更新日期: 2023-09-27 18:10:42
我正在尝试让程序能够取消副本。因此我不能使用Microsoft.VisualBasic.FileIO.FileSystem.CopyFile
。
在网络上有一些CopyFileEx
的包装器,例如这里。然而,我宁愿不使用我不理解的东西,不希望任何意外的结果(或bug)。有没有一种可控的方法来做到这一点?或者可能是MS的包装器(在Windows API CodePack之类的东西中)?
以小块读取文件并将其写入目标。定期检查你是否被要求取消,如果你发现,停止写入并关闭文件。
您是否尝试过在块中复制流,每次检查块时检查是否设置了取消,或者是否注册了取消令牌?
例如你可以这样做:
void CopyStream(Stream inputStream, Stream outputStream)
{
var buffer = new byte[1024];
int bytesRead;
while((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, bytesRead);
if(cancelled){
// cleanup
return;
}
}
}