创建后无法立即写入文件

时间:2012-01-09 08:02:43

标签: c# file io hidden file-attributes

在以下代码中:

if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat"))
{
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}
else
{
    File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat");
    File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}

由于某种原因,第一次运行此代码时,它创建文件就好了,但是没有写入它,直到我退出应用程序并重新运行它。第二,第三等运行工作正常,它只是最初的麻烦。有任何想法吗?文件名和目录是随机的,因为我只是测试一些东西,所以如果你正在测试某些东西,你应该能够将它们改成你想要的东西。提前致谢

4 个答案:

答案 0 :(得分:7)

你应该在 File.Create

之后加上 .Close()
File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat").Close();

MSDN File.Create

了解详情

或者你可以这样做

File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);

MSDN File.WriteAllText

了解详情

答案 1 :(得分:6)

File.Create正在将您的流返回到文件,您可能要在尝试重新打开它之前关闭它。

答案 2 :(得分:4)

File.AppendAllText()将创建该文件(如果该文件尚不存在),因此您可以这样做:

File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden); 

看看是否有帮助:)

答案 3 :(得分:3)

跳过创建文件,如果不存在,AppendAllText方法无论如何都会创建它。 我猜文件.create可能会打开文件锁或文件句柄。