我必须使用StringBuilder而不是String的字符串,因为这个项目坚持使用.NET 1.1。它真的让我的风格变得痉挛,让我觉得我穿着破旧的豹纹皮肤哑巴,并将一块块状的球杆拖过泥土。
无论如何,我想编写一系列调试消息,我已写入文件以便在我的闲暇时学习,因为屏幕上有太多东西要看(MessageBox没有滚动条)。编写文件的一些简单方法似乎在.NET 1.1中不可用。我也没有访问Environment.Newline来干净地分隔我追加的行(AppendLine在这个古老的StringBuilder版本中也不可用)。
足够的抱怨,我想......在.NET 1.1(C#)中将StringBuilder的内容写出来文件的最简单方法是什么?手持设备上没有“C”驱动器,因此我认为我必须将它写入“\ hereIAm.txt”左右。
答案 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)
答案 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());
}