可以';不要在创建后立即写入文件

本文关键字:文件 创建 可以 | 更新日期: 2023-09-27 18:19:51

在以下代码中:

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

出于某种原因,第一次运行此代码时,它会很好地创建文件,但不会写入文件,直到我退出应用程序并重新运行它。第二次、第三次等等运行都很好,只是最初的错误。有什么想法吗?文件名和目录是随机的,因为我刚刚测试了一些东西,所以如果你正在测试一些东西,你应该能够将它们更改为你想要的任何东西。提前感谢

可以';不要在创建后立即写入文件

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

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

在MSDN文件中阅读更多信息。创建

或者你可以做这个

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

在MSDN File.WriteAllText 上阅读更多信息

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

File.AppendAllText()将在文件不存在的情况下创建该文件,因此您可以执行以下操作:

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

看看这是否有帮助:)

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