我正在尝试在做一些工作后删除C#中的文件,但是它不能像其他进程一样使用该文件发出错误,我怎么能做任何一个有任何想法呢?
答案 0 :(得分:7)
确保在使用完文件后关闭该文件。如果另一个进程打开它,则跟踪句柄以查看发生了什么(Process Explorer对此有利)。
如果您在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
}
答案 1 :(得分: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");
}
这里我没有在文件信息上获得任何处理功能