将StringBuilder的内容写入.NET 1.1中的文本文件的最简单方法是什么?

时间:2013-03-15 23:32:31

标签: c# .net file-io windows-ce stringbuilder

我必须使用StringBuilder而不是String的字符串,因为这个项目坚持使用.NET 1.1。它真的让我的风格变得痉挛,让我觉得我穿着破旧的豹纹皮肤哑巴,并将一块块状的球杆拖过泥土。

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

足够的抱怨,我想......在.NET 1.1(C#)中将StringBuilder的内容写出来文件的最简单方法是什么?手持设备上没有“C”驱动器,因此我认为我必须将它写入“\ hereIAm.txt”左右。

5 个答案:

答案 0 :(得分:86)

我知道这是一个老帖子,它想要.NET 1.1的答案,但已经有一个非常好的答案。我认为对于那些可能拥有更新版本的.Net框架的人来说,回答那些可能有更新版本的.Net框架,例如我自己寻找同一问题的答案时,我会感觉很好。

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

System.IO.File.WriteAllText(@"C:\MyDir\MyNewTextFile.txt",sbMyStringBuilder.ToString());

答案 1 :(得分:69)

您仍然可以访问StreamWriter

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

来自MSDN文档: Writing to a Text File (Visual C#)

答案 2 :(得分:6)

无需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 Method (String)(.NET Framework 1.1)

Writing Text to a File (.NET Framework 1.1)

答案 3 :(得分:4)

StreamWriter适用于.NET 1.1。并为Compact framework。只需打开文件并将ToString应用于StringBuilder:

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

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

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

答案 4 :(得分:2)

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

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