2

在以下代码中:

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);
}

出于某种原因,第一次运行此代码时,它会很好地创建文件,但不会写入文件,并且在我退出应用程序并重新运行它之前不会写入。第 2 次、第 3 次等运行正常,只是最初的情况很糟糕。有任何想法吗?文件名和目录是随机的,因为我只是在测试一些东西,所以如果你正在测试一些东西,你应该能够将它们更改为你想要的任何东西。提前致谢

4

4 回答 4

7

您应该将.Close()放在File.Create之后

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

于 2012-01-09T08:08:10.883 回答
6

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

于 2012-01-09T08:05:52.287 回答
4

File.AppendAllText() 将创建该文件,如果它不存在,所以你可以这样做:

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

看看是否有帮助:)

于 2012-01-09T08:06:29.620 回答
3

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

于 2012-01-09T08:06:20.133 回答