3

画像を変更できるアプリがあります。場合によっては、これによりファイルサイズが小さくなり、場合によっては大きくなります。

プログラムには、「結果のファイルサイズが大きい場合、ファイルを置き換えない」というオプションがありません。

そこで、これを解決するために小さな C# アプリを作成しました。

ファイルを上書きする代わりに、アプリに結果を現在のフォルダーの下のフォルダーに書き込み、そのフォルダーに Test という名前を付けます。

私が作成した C# アプリは、両方のフォルダーの内容を比較して取得し、ファイルへのフル パスを 2 つの List オブジェクトに配置します。次に、比較して置き換えます。

ただし、交換は機能しません。次の IOException が発生します。

置換するファイルを削除できません

場所は、私が完全な権利を持っている外付けハードドライブにあります。

File.Delete と File.Move をこの順序で実行できることはわかっていますが、この例外により、この特定のセットアップが機能しない理由に興味を持ちました。

ソースコードは次のとおりです: http://pastebin.com/4Vq82Umu

はい、Replace 関数の最後の引数として指定されたファイルは存在します。

4

1 に答える 1

3

置き換えられるファイルがメモリにロードされていないことを確認します。これにより、ファイルがロックされる可能性があります

using ステートメントを使用して、リソースを自動的に破棄してみてください。

ドキュメントによると:

destinationBackupFileName が別のドライブにある場合、ドキュメントに記載されているように削除されず、代わりに「置換するファイルを削除できません」というメッセージとともに IOException がスローされます。投げられる

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx

于 2010-04-05T22:12:42.957 に答える