64

我必须使用 StringBuilder 而不是字符串列表,因为这个项目被 .NET 1.1 卡住了。

我想编写一系列已写入文件的调试消息,以便在闲暇时学习,因为屏幕上看不到太多内容(MessageBox 没有滚动条)。.NET 1.1 中似乎没有一些编写文件的简单方法。我也无法Environment.Newline干净地分隔我附加的行(AppendLine在这个古老的 StringBuilder 版本中也不可用)。

.NET 1.1 (C#) 中将 StringBuilder 的内容写入文件的最简单方法是什么?手持设备上没有“C”驱动器,所以我想我必须将它写入“\hereIAm.txt”或其他东西。

4

5 回答 5

98

我知道这是一篇旧帖子,它想要 .NET 1.1 的答案,但已经有一个很好的答案。我认为最好为那些登陆这篇文章的人提供一个答案,这些人可能拥有更新版本的 .Net 框架,比如我自己在寻找相同问题的答案时。

在这些情况下,有一种更简单的方法可以将 StringBuilder 的内容写入文本文件。只需一行代码即可完成。它可能不是最有效的,但这不是现在真正的问题。

System.IO.File.WriteAllText(@"C:\MyDir\MyNewTextFile.txt",sbMyStringBuilder.ToString());
于 2014-06-27T11:12:02.373 回答
96

您仍然可以访问StreamWriter

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"\hereIam.txt"))
{
    file.WriteLine(sb.ToString()); // "sb" is the StringBuilder
}

来自 MSDN 文档:写入文本文件 (Visual C#)

File.WriteAllText对于较新版本的 .NET Framework(2.0 版以上),这可以通过使用该方法的一行来实现。

System.IO.File.WriteAllText(@"C:\TextFile.txt", stringBuilder.ToString());
于 2013-03-15T23:35:17.760 回答
10

不需要StringBuilder

string path = @"c:\hereIAm.txt";
if (!File.Exists(path)) 
{
    // Create a file to write to.
    using (StreamWriter sw = File.CreateText(path)) 
    {
        sw.WriteLine("Here");
        sw.WriteLine("I");
        sw.WriteLine("am.");
    }    
} 

但当然,您可以使用StringBuilder创建所有行并将它们一次写入文件。

sw.Write(stringBuilder.ToString());

StreamWriter.Write方法(字符串)(.NET Framework 1.1)

将文本写入文件 (.NET Framework 1.1)

于 2013-03-15T23:36:19.070 回答
7

StreamWriter可用于 NET 1.1。和紧凑的框架。只需打开文件并将 ToString 应用于您的 StringBuilder:

    StringBuilder sb = new StringBuilder();
    sb.Append(......);

    StreamWriter sw = new StreamWriter("\\hereIAm.txt", true);
    sw.Write(sb.ToString());
    sw.Close();

另外,请注意您说您想将调试消息附加到文件(如日志)。在这种情况下,StreamWriter 的正确构造函数是接受append布尔标志的构造函数。如果为真,那么它会尝试附加到现有文件,如果不存在则创建一个新文件。

于 2013-03-15T23:38:06.770 回答
6

如果您需要从字符串生成器逐行编写

StringBuilder sb = new StringBuilder();
sb.AppendLine("New Line!");

using (var sw = new StreamWriter(@"C:\MyDir\MyNewTextFile.txt", true))
{
   sw.Write(sb.ToString());
}

如果您需要从字符串生成器将所有文本写为单行

StringBuilder sb = new StringBuilder();
sb.Append("New Text line!");

using (var sw = new StreamWriter(@"C:\MyDir\MyNewTextFile.txt", true))
{
   sw.Write(sb.ToString());
}
于 2019-01-06T08:55:26.967 回答