web-dev-qa-db-ja.com

.NET 1.1でStringBuilderの内容をテキストファイルに書き込む最も簡単な方法は何ですか?

このプロジェクトでは.NET 1.1に固執しているため、文字列のリストの代わりにStringBuilderを使用する必要があります。それは本当に私のスタイルをcr屈にし、ぼろぼろの古いヒョウの皮を着て、ゴツゴツしたクラブを土の中にドラッグしているように感じさせます。

とにかく、画面に表示するものが多すぎるので(メッセージボックスにはスクロールバーがありません)、暇なときに勉強するためにファイルに書き込んだ一連のデバッグメッセージを書きたいと思います。ファイルを作成する簡単な方法のいくつかは、.NET 1.1では使用できないようです。また、Environment.Newlineにアクセスして、追加する行をきれいに分離することもできません(この古いバージョンのStringBuilderでは、AppendLineも使用できません)。

十分な泣き言、私は推測します... .NET 1.1(C#)でStringBuilderの内容をファイルに書き出す最も簡単な方法は何ですか?ハンドヘルドデバイスには「C」ドライブがないため、「\ hereIAm.txt」などに書き込む必要があります。

46
B. Clay Shannon

まだStreamWriterにアクセスできます:

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

MSDNドキュメントから:テキストファイル(Visual C#)への書き込み

71
Darren

これは古い投稿であり、.NET 1.1に対する回答が必要であることは知っていますが、すでに非常に良い回答があります。私が同じ質問の答えを探しに行ったときのように、.Netフレームワークのより新しいバージョンを持っている可能性のあるこの投稿にたどり着いた人たちに答えがあるといいと思いました。

そのような場合、StringBuilderの内容をテキストファイルに書き込むさらに簡単な方法があります。 1行のコードで実行できます。それは最も効率的ではないかもしれませんが、それは今の問題ではありませんでした。

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

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)

6
Tim Schmelter

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ブール値フラグを受け入れるコンストラクターです。 trueの場合、既存のファイルに追加するか、存在しない場合は新しいファイルを作成しようとします。

4
Steve

文字列ビルダーから1行ずつ記述する必要がある場合

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