我试图在对其进行一些工作后删除 C# 中的文件,但它不像另一个进程正在使用该文件那样给出错误,我该怎么做任何人都知道的事情?
问问题
3772 次
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 回答