2

我试图在对其进行一些工作后删除 C# 中的文件,但它不像另一个进程正在使用该文件那样给出错误,我该怎么做任何人都知道的事情?

4

2 回答 2

8

确保在完成处理后关闭文件。如果另一个进程打开了它,则跟踪句柄以查看发生了什么(进程资源管理器对此很有用)。

如果您将打开的文件包装在using语句中,则会在块的末尾发生这种情况。否则,请确保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 回答