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 に答える