1

ユーザーが情報を送信すると、ログファイルにデータを書き込んでいます。オフィス内の他のユーザーはこのログファイルを表示する必要があるかもしれませんが、オフィスユーザーがファイルを開いている場合、より多くの情報が送信されるため、ログファイルへの書き込みを続行できません。別のユーザーがファイルのインスタンスを開いている場合でも、ファイルへの書き込みを続行する方法はありますか?

using(StreamWriter writer = new StreamWriter(@"\\filelocation\filename.csv"))
{
     writer.WriteLine("Testing, testing");

     writer.Close();
}
4

1 に答える 1

0

ログファイルの作成を続行する必要がある場合は、トレースを使用することをお勧めしますか?このようにトレースに「リスナー」を付けることができます。

Trace.Listeners.Add(new TextWriterTraceListener("myfilename.txt"));

もちろん、ファイル名を渡しても自動フラッシュは行われず、ファイルが閉じるか、バッファがいっぱいになるまでファイルには何も含まれません。したがって、プログラムの開始時にストリームを作成できます。

FileInfo fi = new FileInfo("myLogFile.txt");
StreamWriter _sw;

void Main()
{
    _sw = fi.CreateText();
    _sw.AutoFlush = true;
    Trace.Listeners.Add(new TextWriterTraceListener(sw));
}

void Close()
{
    if(_sw != null)
    {
        _sw.Flush();
        _sw.Dispose();
    }
}

次に、プログラムで、「ログ」への書き込みごとにファイルを開いたり閉じたりする代わりに、これを行うことができます。

Trace.WriteLine("My message here");

トレースにはカテゴリと呼ばれるクールなものもあり、ログに最適です...

Trace.WriteLine("My message here", "INFO");

//Output:
//INFO: My message here

私が見つけた1つのことは、一部のシステムではテキストファイルを開くことができないが、そのコピーを作成して開くことができ、元のファイルが引き続き入力されることです。

于 2012-11-15T16:28:35.437 に答える