【问题标题】:c# Can't Append text to existing file [closed]c#无法将文本附加到现有文件[关闭]
【发布时间】:2021-11-25 01:01:49
【问题描述】:

我正在尝试使用 c# 将一些文本附加到现有的 TEXT 文件中。我已经尝试了以下四种不同的方法,但它不起作用。这确实可以在我家里的机器上工作,但不能在我工作的桌面上工作(所以我假设两台 PC 之间有所不同,而不是 c# 代码。)我已经查看了这个文本文件的权限和所有内容看起来不错。我当然有正确的权限写入这个文件。它们都运行 Windows 10。两台机器都运行 Visual Studio 2019 社区版版本 16.11.3。我是两台机器的管理员。

var thePath = "C:\\Temp\\Logs\\MyTextFile.txt";

File.AppendAllText(thePath, "New Data" + Environment.NewLine);

File.AppendAllLines(thePath, new [] { "New Data" });

using (StreamWriter sw = new StreamWriter(thePath, true))
{
    sw.WriteLine("New Data");
    sw.Flush();
    sw.Close();
}

using (StreamWriter sw2 = File.AppendText(thePath))
{
    sw2.WriteLine("New Data");
    sw2.Flush();
    sw2.Close();
}

【问题讨论】:

  • 您遇到异常了吗?是否在两台机器上都启用了 UAC?您的应用程序是否在两台机器上运行提升?
  • 你写的代码好像没有问题。您应该发布错误消息或对其进行调试。 File.AppendAllText(thePath, "New Data" + Environment.NewLine); 本身应该可以工作,但是它只会添加到同一行,而不会给你一个新行。
  • 我认为对FlushClose 的调用是不必要的,因为你有一个using 语句应该为你刷新和关闭StreamWriters。尝试写入您更有可能拥有写入权限的位置,例如当前用户的 Documents 目录。
  • hmm... 公司安全策略在访问“C:\”时可能会很棘手(如果 Temp 是用另一个 aoocunt 创建的,而不是您的,等等...)。您可以在 %Appdata% 中对其进行测试(登录用户可以在这里执行“所有操作”)以确定吗? File.AppendAlltext 应该没问题 - 如果权限合适:-)
  • 您可以尝试自己创建文件并写入文件,然后运行此代码。通过自己创建文件,它将排除(或确认)问题是否归结为权限。不是解决办法,但可以让您专注于真正的原因。

标签: c# windows


【解决方案1】:

多亏了对 Google 的更多检查,问题原来是 Comodo 阻止我的机器写入该驱动器/文件夹。一旦我们(暂时)关闭它,它就工作得很好。感谢您的所有意见。

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    相关资源
    最近更新 更多