2

いくつかの作業を行った後にC#でファイルを削除しようとしていますが、別のプロセスがファイルを使用しているようにエラーが発生するため機能しません。

4

2 に答える 2

8

作業が完了したら、必ずファイルを閉じてください。別のプロセスが開いている場合は、ハンドルを追跡して何が起こっているかを確認します (これには Process Explorer が適しています)。

usingステートメントでファイル open をラップすると、ブロックの最後でこれが発生します。Dispose()それ以外の場合は、ストリームを再度開く前に、必ずストリームを呼び出してください。

using(var fs = File.Open(path))
using(var reader = new StreamReader(fs))
{
    // do stuff with the file
}   // Dispose() is called here which closes the file as well

try
{
    // should work now
    File.Delete(path);
}
catch(SomeException ex)
{
    // just in case, do something
}
于 2012-11-01T02:38:20.310 に答える
0

私は次のようなコードを使用しています

        DirectoryInfo DI = new DirectoryInfo(@"D:\TimeQImages\");
        if (DI.Exists)
        {
            progressBar1.Value = 0;
            FileInfo[] fi = DI.GetFiles();
            int size = fi.Length;
            if (size < 100)
            {
                size = 100 / size;
            }
            else
            {
                size = (int)(size / 100);
            }
            foreach (FileInfo f in fi)
            {
                progressBar1.Value += size;
                ConvertToChunks(f.FullName);                     
                f.Delete();
            }
            MessageBox.Show("Transfer completed");
        }

ここでは、ファイル情報に対して破棄関数を取得していません

于 2012-11-01T17:46:35.477 に答える