2011-06-09 2 views
3

作成したファイルにエラーを保存するテキストファイルを作成しました。私は一度押すと、ファイルに保存する必要があるエラーを生成するボタンがあります。しかし、ボタンを2回押すと、ファイルの内容が上書きされるため、最初に生成されたエラーが上書きされます。新しいエラーを保存する別のファイルを生成したい。新しいエラーごとに新しいファイルを生成する必要があります。その後、FileExists Methodし、新しい名前を選んで存在している場合:C#テキストファイルにエラーログが含まれています

事前

+2

ボタンを100回クリックすると100個のファイルが作成されます。なぜあなたはそれを望んでいますか? –

+0

本当の質問は、なぜU(@AshBurlaczenko)がそれを望むのでしょうか?あなたはユーザーでした;) – Nix

+0

なぜ地球上の人々は誰かが何かしたいのかについて質問します。このサイトは理由ではなく、問題に関するものです! –

答えて

1
private void SaveErrorMessage(string errorMessage) 
{ 
    string errorFile = null; 
    for(int x = 0; x < Int32.MaxValue; ++x) 
    { 
     errorFile = string.Format(CultureInfo.InvariantCulture, "error-{0}.txt", x); 
     if(!System.IO.File.Exists(errorFileTest)) 
     { 
      break; 
     } 
    } 

    File.WriteAllText(errorFile, errorMessage); 
} 

のための完全なリンクこれは、あなたがInt32.MaxValueをファイルを持っていた後に、最後のファイルが上書きされますが、それは取りますよしばらく。

新しい(または新しい)ファイルを作成するのではなく、単にファイルに追加する方法があります。

log4netなど、より堅牢なロギングソリューションの使用を検討することもできます。

2

簡単な使用に感謝します。あるいは、ファイルに追加するだけでも構いません。

PSUDO:

public string checkFileName(string fileName){ 
    if(File.Exists(fileName)){ 
    /Pick a new one 
    newFileName= fileName + DateTime.Now.ToLongDateString() 
    return checkFileName(newFileName) 
    } 
    return fileName 
} 

は、これは可能性がありますHow to Open and Append a log file

+0

同じファイルにエラーを追加したくありません。エラーごとに別々のファイルを作成します。 – bharathi

+0

最初のアドバイスを受けてください。ファイルが存在するかどうかを確認し、ファイル名を変更します。 – Nix

+0

なぜ再帰を使用するのですか?ファイルがすでに存在する(起こりそうもない)イベントでは、名前はこのように長くなり続けるだけです。 – Sven

2

ファイル名にタイムスタンプを追加できます。この場合、毎回新しいファイルが作成されます。

1

プログラムで発生するエラーごとに一意のファイル名を生成しますか?おそらく、これを達成する最も簡単な方法は、ファイルに名前を付ける際にエラーが発生した日時を使用することです。 LOGPATHはあなたにエラーファイルを作成したいフォルダへのパスです

string filename = LogPath + DateTime.Now.ToString("yyyyMMdd.HHmmss") + ".err"; 

:あなたがファイルへの書き込みをされている機能では、このようなファイルに名前を付けることになるでしょう。