-1

処理されたジョブの詳細を.txtファイルに書き込むコンソールアプリケーションがあります。私はそれを行うためにこのコードを使用します:

StreamWriter jp = new StreamWriter(jobsProcessed);
jp.WriteLine(DateTime.Now.ToString());
jp.WriteLine(info);
jp.WriteLine("------");
jp.Close();

残念ながら、ジョブが処理されるたびに、新しい「info」文字列が前の文字列に置き換わります。テキストファイルの最後または最初に新しいテキストを追加する方法はありますか?

4

5 に答える 5

2
StreamWriter jp = new StreamWriter(jobsProcessed,true);

2番目のパラメーター

//Determines whether data is to be appended to the file. If the file exists
//and append is false, the file is overwritten. If the file exists and append
// is true, the data is appended to the file. Otherwise, a new file is created.

http://www.dotnetperls.com/streamwriter http://social.msdn.microsoft.com/Forums/zh/clr/thread/17cd8ccf-7e53-41de-b4cc-221da70405a4

于 2013-01-17T11:22:14.030 に答える
2

StreamWriterコンストラクター(文字列、ブール値)を使用できます。ここで、2番目のブールパラメーターは、データを既に使用可能なパラメーターに追加する必要があるかどうかを示します。

また、ステートメントを呼び出しCloseて使用することは避けてくださいusing

using(StreamWriter jp = new StreamWriter(jobsProcessed))
{
    jp.WriteLine(DateTime.Now.ToString());
    jp.WriteLine(info);
    jp.WriteLine("------");
   //jp.Close(); //NO NEED MORE
}

ちなみに、例外が発生した場合でも、ストリームは発生する可能Disposed性があります。

于 2013-01-17T11:23:00.843 に答える
2

append;と呼ばれる2番目のパラメーターを受け取るStreamWriterコンストラクターにオーバーロードがあります。

using (StreamWriter jp = new StreamWriter(jobsProcessed, true))
{
    jp.WriteLine(DateTime.Now.ToString());
    jp.WriteLine(info);
    jp.WriteLine("------");
}

StreamWriterをusing上記のようなブロックにまとめることもお勧めします。

于 2013-01-17T11:24:06.020 に答える
1

これを修正するだけです:

StreamWriter jp = new StreamWriter(jobsProcessed);

これに:

StreamWriter jp = new StreamWriter(jobsProcessed, true);
于 2013-01-17T11:23:12.677 に答える
0
// using (StreamWriter jp = new StreamWriter(jobsProcessed)) Overwrites, not good for you!
using (StreamWriter jp = new StreamWriter(jobsProcessed, true)) // Appends, good for you!
{
    jp.WriteLine(DateTime.Now.ToString());
    jp.WriteLine(info);
    jp.WriteLine("------");
}

しかし、次のようにコードを例示することができます。

String[] content = File.ReadAllLines(jobsProcessed);

String[] newContent = new String[3];
newContent[0] = DateTime.Now.ToString();
newContent[1] = info;  
newContent[2] = "------";

File.AppendAllLines(jobsProcessed, newContent);
于 2013-01-17T11:26:34.750 に答える