2009-08-13 10 views
0

これはC#で書かれたWinFormです。 選択したディレクトリにランダムな名前のテキストファイルを生成しています。ボタンを最初にクリックすると、テキストボックスに含まれるデータがそのテキストファイルに書き込まれます。ユーザーがテキストボックス内の異なるデータで同じことをしたい場合、ボタンをクリックすると、古いデータを失うことなく新しいデータをテキストファイルに書き込む必要があります。これはログを保存するようなものですが、これは可能ですか?ログをC#に保存する方法は?

私のコードは次のようである:

private readonly Random setere = new Random(); 
    private const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    private string RandomString() 
    { 
     char[] buffer = new char[5]; 
     for (int i = 0; i < 5; i++) 
     { 
      buffer[i] = chars[setere.Next(chars.Length)]; 
     } 
     return new string(buffer); 
    } 




    private void button1_Click(object sender, EventArgs e) 
    { 


     DialogResult dia = MessageBox.Show("Wanna continue?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 


     if (dia == DialogResult.Yes) 
     { 
      StreamWriter wFile = new StreamWriter("C:\\Users\\Ece\\Documents\\Testings\\" + RandomString() + ".txt"); 
      wFile.WriteLine("Name Surname:" + text1.Text + text2.Text); 
      wFile.WriteLine("Other:" + text3.Text + text4.Text); 
      wFile.WriteLine("Money:" + textBox1.Text + " TL."); 
      wFile.WriteLine("*************************************"); 
      wFile.Close(); 



     } 
     else 
     { 

      return; 
     } 


    } 

答えて

2

のようなものを追加するためにファイルを開いて、このようなものを使用してを見てください。より多くの情報を更新

ためMSDN StreamWriterを参照してください削除。古い例も

あなたはMSDNブックスからもう一度 )あなたはPath.GetRandomFileNameを(使用できるユニークなファイルを作成しようとしている場合:

GetRandomFileNameメソッドは、 というフォルダ名またはファイル名のいずれかとして使用できる、暗号的に強力なランダム 文字列を返します。

UPDATED:は、プロジェクトに新しいクラスを追加し、あなたが2.0を作成した場合に調整する必要がありので、これは3.0型の構文である(次の行を追加します

以下Loggerクラスの例を追加しましたバージョン)

using System; 
using System.IO; 

namespace LogProvider 
{ 
    // 
    // Example Logger Class 
    // 
    public class Logging 
    { 
     public static string LogDir { get; set; } 
     public static string LogFile { get; set; } 
     private static readonly Random setere = new Random(); 
     private const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

     public Logging() { 
      LogDir = null; 
      LogFile = null; 
     } 

     public static string RandomFileName() 
     { 
      char[] buffer = new char[5]; 
      for (int i = 0; i < 5; i++) 
      { 
       buffer[i] = chars[setere.Next(chars.Length)]; 
      } 
      return new string(buffer); 
     } 


     public static void AddLog(String msg) 
     { 
      String tstamp = Convert.ToString(DateTime.Now.Day) + "/" + 
          Convert.ToString(DateTime.Now.Month) + "/" + 
          Convert.ToString(DateTime.Now.Year) + " " + 
          Convert.ToString(DateTime.Now.Hour) + ":" + 
          Convert.ToString(DateTime.Now.Minute) + ":" + 
          Convert.ToString(DateTime.Now.Second); 

      if(LogDir == null || LogFile == null) 
      { 
       throw new ArgumentException("Null arguments supplied"); 
      } 

      String logFile = LogDir + "\\" + LogFile; 
      String rmsg = tstamp + "," + msg; 

      StreamWriter sw = new StreamWriter(logFile, true); 
      sw.WriteLine(rmsg); 
      sw.Flush(); 
      sw.Close(); 
     } 
    } 
} 

があなたのフォームにこれを追加のonloadイベント

LogProvider.Logging.LogDir = "C:\\Users\\Ece\\Documents\\Testings"; 
LogProvider.Logging.LogFile = LogProvider.Logging.RandomFileName(); 

さて、次のようになり、ボタンのクリックイベントを調整します

DialogResult dia = MessageBox.Show("Wanna continue?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
if (dia == DialogResult.Yes) 
{ 
    StringBuilder logMsg = new StringBuilder(); 
    logMsg.Append("Name Surname:" + text1.Text + text2.Text + Environment.NewLine); 
    logMsg.Append("Other:" + text3.Text + text4.Text + Environment.NewLine); 
    logMsg.Append("Money:" + textBox1.Text + " TL." + Environment.NewLine); 
    logMsg.Append("*************************************" + Environment.NewLine); 
    LogProvider.Logging.AddLog(logMsg.ToString()); 
} else 
{ 
    return; 
} 

今、あなたが唯一のアプリケーションが実行されていることを全体の時間に1つのファイルを作成する必要があり、その1つのファイルにあなたのボタンをクリックするたびにログに記録されます。

+0

1つのテキストファイルで.. –

+0

あなたのファイル名を作成する方法が原因です。あなたが1つのファイルの後にいるならば、一度だけ一意のファイルを作成してください。 – Wayne

6

あなたはファイル内のテキストに追加することができます。

はpathofFileがに追加するファイルのパスです

File.AppendText

using (StreamWriter sw = File.AppendText(pathofFile)) 
     { 
      sw.WriteLine("This"); 
      sw.WriteLine("is Extra"); 
      sw.WriteLine("Text"); 
     } 

を参照してください。

0

StreamWriter fw = new StreamWriter(@"C:\Logs\MyFile.txt",true); 
fw.WriteLine("Some Message" + Environment.Newline); 
fw.Flush(); 
fw.Close(); 

希望に役立ちます:ちょうどSystem.IO.File.AppendText

1

あなたがlog4netとRollingFileAppenderを見てみたいことがあります

私は自分自身が...また、私はTRUEが変わっものを得るdidntは、それはまだ書き込みするのではなく、複数のファイルを作成する方法を記述する必要がありましたので、私はGetRandomFileNameを使用didntの
関連する問題