现象1:打开文件夹。执行删除后,在下一帧判断文件夹(Directory.Exists(topfolder))任然存在原因是
现象2: 不打开文件夹。执行删除后,在下一帧判断文件夹(Directory.Exists(topfolder))是不存在
现象3:如果在打开文件夹,执行删除后等待100毫秒,在下一帧判断文件夹(Directory.Exists(topfolder))不存在
问题1:想知道为什么会出现这种情况,是C#删除过程中,之间在处理什么造成了这种区别。
问题2:如果不想用等待100毫秒。有更好的方法吗?
public static void test()
{
string topfolder = string.Format("{0}\\{1}", @"d:0(1)", "666");
string filename = string.Format("{0}\\{1}", topfolder, "ReflectorData");
//替换已存在的文件
if (Directory.Exists(topfolder))
{
DirectoryInfo dir = new DirectoryInfo(topfolder);
foreach (var item in dir.GetFiles())
{
item.Delete();
}
Directory.Delete(topfolder, true);
}
else
{
//Directory.CreateDirectory(topfolder); Console.WriteLine("Create");
}
Thread.Sleep(100);
//创建文件夹
if (!Directory.Exists(topfolder))
{
Directory.CreateDirectory(topfolder);
Console.WriteLine("Create");
}
else
{
Console.WriteLine("error");
}
FileStream fs = new FileStream(filename, FileMode.Create);
byte[] data = Encoding.Default.GetBytes(DateTime.Now.ToString());
fs.Write(data, 0, data.Length);
fs.Flush();
fs.Close();
fs.Dispose();
Console.ReadLine();
}
你说的应该是打开文件?打开文件夹是什么鬼。
如果没有别的程序访问,删除文件是同步的,也就是删除文件之后访问肯定不存在