Sne*_*thy 4 c# directory file delete-file
我试图解析一个文件夹并删除其中的所有文件.
DirectoryInfo dir = new DirectoryInfo("C\\Temp");
if (dir.GetDirectories().Any(p => p.Name == "\\NewTemp"))
{
foreach (string file in Directory.GetFiles(dir + "\\NewTemp"))
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码工作正常并删除我的\ NewTemp文件夹中的所有文件.但是如果打开任何文件,那么这些文件将不会被删除.我想要先关闭打开的文件并删除它们.我甚至试过了
foreach (string file in Directory.GetFiles(dir + "\\NewTemp"))
{
TextReader tr = new StreamReader(dir+"\\NewTemp\\"+file);
tr.Close();
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
Run Code Online (Sandbox Code Playgroud)
但没用.请告诉我我失踪的地方.
请告诉我我失踪的地方.
那么你正在关闭文件的句柄 - 但这不会影响任何其他文件句柄,无论它们是否由你的进程拥有.基本上你不能删除其他地方使用的文件,除非它已经用文件共享标志显式打开,允许删除它.据我所知,这就是Windows文件系统的工作方式.(编辑:我最初建议使用记事本作为保持文件句柄打开的一种方式,但显然它在将其加载到内存后关闭句柄.嗯,尝试其他应用程序:)