【问题标题】:Can't write to file immediately after creation创建后无法立即写入文件
【发布时间】:2012-01-09 08:02:42
【问题描述】:

在以下代码中:

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 次等运行正常,只是最初的情况很糟糕。有任何想法吗?文件名和目录是随机的,因为我只是在测试一些东西,所以如果你正在测试一些东西,你应该能够将它们更改为你想要的任何东西。提前致谢

【问题讨论】:

  • 什么是完整的异常文本/确切问题?
  • Piotr Auguscik(下)回答了它。也不例外。

标签: c# file io hidden file-attributes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你应该把 .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

    【讨论】:

      【解决方案3】:

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

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

      看看有没有帮助:)

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 无需猜测。 File.Create() 确实保持句柄打开,直到创建的流被关闭/处置。
        猜你喜欢
        • 2019-08-16
        • 2017-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多