【问题标题】:C# File.WriteAllText() method creating the file but not writing anythingC# File.WriteAllText() 方法创建文件但不写任何东西
【发布时间】:2021-09-05 10:17:25
【问题描述】:

public void SetVariables() {

        textToWrite= installedVersion.ToString();
        log.Debug("Release version Update : " + textToWrite);

        File.WriteAllText(@".\test\test.txt", textToWrite);

    }

【问题讨论】:

  • 您是否 100% 确定您正在查看正确的文件?您极不可能发现错误。 99.9% 的情况下,您只是在查看与您想要的文件不同的文件。使用物理路径而不是虚拟路径更容易找出。
  • 可能 textToWrite 为空,或者您稍后在代码中用空字符串覆盖 File?
  • @CamiloTerevinto 你的意思是绝对路径而不是相对路径?
  • 请记住,如果这是一个桌面应用程序,当您在 Visual Studio 中运行此代码时,应用程序运行的路径是 BIN\DEBUG 或 BIN\RELEASE 并给出您应该查找的相对路径从这些文件夹开始的文件
  • @Roman - log.Debug("发布版本更新:" + textToWrite);此行打印正确的值。但是当我在文件中写入时,文件是在相对路径中创建的,但文件的内容是空的

标签: c# file-handling


【解决方案1】:
using (var writer = File.AppendText("output.txt"))
        {
                var line = "Hello World!";
                writer.WriteLine(line);
        }

像这样试试。如果您在 Visual Studio 调试模式下运行应用程序,请在 debug 文件夹中查找输出文件。如果可行,请调整路径。

如果你的 textToWrite 太大,你可以遍历你的行:

using (var writer = File.AppendText("output.txt"))
{
   foreach (var line in lines)
   {
     writer.WriteLine(line);
   }
}

如果它太大,请阅读博客文章中的示例,我对你发表了评论

【讨论】:

  • 我没有通过 Visual Studio 运行它。它从我的框架运行,该框架正在监视提到的位置并根据文件内容处理下一条指令。尝试运行上面的代码仍然是相同的问题。不确定它的机器特定问题或其他问题
  • 这可能是您出错的原因。也许您可以编辑帖子并描述您的框架/设置。有人可能有类似的设置和错误。您使用的是哪种 .Net 框架?
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Net Framework Setup\NDP\CDF HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Net Framework Setup\NDP\CDF\v4.0 HttpNamespaceReservationInstalled REG_DWORD 0x1 NetTcpPortSharingInstalled REG_DWORD 0x1 NonHttpActivationInstalled REG_DWORD 0x1 SMSvcHostPath :\Windows\Microsoft.NET\Framework64\v4.0.30319\ WMIInstalled REG_DWORD 0x1
  • 您能否提供有关您的代码的更多信息,因为如果 textToWrite 不为空,并且您创建了一个没有错误的文件,则您删除了该文件并再次创建了它,您发现新创建的文件在字典,不可能是权限问题、路径问题或价值问题。您确定调用了 SetVariables 函数吗?当使用空字符串再次调用该方法时,您确定该文件没有在代码中的某处被覆盖吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多