1

我正在使用以下代码将远程文件复制到本地。复制大文件时如何检测操作失败。

除了处理 system.io 异常之外,还有什么更好的方法来检测故障吗?

File.Copy(remoteSrcFile, dest);

这是框架提供的复制文件大小在千兆字节范围内的大文件的最佳方法吗?

4

2 回答 2

4

除了处理 system.io 异常之外,有没有更好的方法来检测故障?

可以预先检查许多可能的错误,例如无效的文件名。如果File.Copy失败,它会抛出异常。没有其他错误指示​​器。

这是框架提供的复制文件大小在千兆字节范围内的大文件的最佳方法吗?

这取决于您想要的其他功能。例如,如果你想显示进度,File.Copy 不会帮助你,因为它只是包装了 FileCopy API。但是,调用 Windows API FileCopyEx 可以提供进度。请参阅我可以在 .NET 中使用 FileInfo.CopyTo() 显示文件复制进度吗?了解更多信息。

于 2012-09-18T23:09:58.620 回答
3

复制失败应该是一种例外情况,因此失败被建模为例外。

File.Copy您应该将调用包装在try/catch中以捕获您能够显式容纳的任何异常。

File.Copy是框架中唯一与 . 一起“包含”的东西FileInfo.CopyTo。但是,您可以以不同的方式使用它。也许会产生一个线程来调用它。您还可以使用基本 IO 将数据从一个文件读取到另一个文件以获得更好的进度/取消;但是,这取决于您想要实现的目标。

于 2012-09-18T23:08:53.847 回答