64

このプロジェクトでは.NET1.1に固執しているため、文字列のリストの代わりにStringBuilderを使用する必要があります。

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

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

4

5 に答える 5

98

これは古い投稿であり、.NET 1.1に対する回答が必要であることはわかっていますが、すでに非常に良い回答があります。同じ質問への回答を探しに行ったときのように、この投稿にアクセスして、.Netフレームワークの最新バージョンを使用している可能性のある人々に回答を提供するのは良いことだと思いました。

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

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以降)の場合、これはこのメソッドを使用して1行で実現できます。

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はNET1.1で使用できます。コンパクトフレームワークの場合。ファイルを開いて、ToStringをStringBuilderに適用するだけです。

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

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

また、デバッグメッセージ(ログなど)をファイルに追加することを指定していることに注意してください。appendこの場合、StreamWriterの正しいコンストラクターは、ブールフラグを受け入れるコンストラクターです。trueの場合、既存のファイルに追加するか、存在しない場合は新しいファイルを作成しようとします。

于 2013-03-15T23:38:06.770 に答える
6

文字列ビルダーから1行ずつ書き込む必要がある場合

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

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

文字列ビルダーからすべてのテキストを1行で書き込む必要がある場合

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 に答える