2013-04-25 67 views
0

我想生成幾個文件,所以我寫了這個代碼,其中value得到但我只得到一個文件創建,爲什麼?應該不是797文件呢?什麼是錯在我的代碼?:生成很多文件不起作用

private void button3_Click(object sender, EventArgs e) 
    { 
     int value = bdCleanList.Count()/Int32.Parse(textBox7.Text); 
     MessageBox.Show(value.ToString()); 
     string bases_generadas = 
      System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, 
            "bases_generadas"); 

     for (int i = 1; i < value; i++) 
     { 
      string newFileName = "bases_generadas_" + 
           DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + 
           ".txt"; 
      using (System.IO.FileStream fs = 
         System.IO.File.Create(
         System.IO.Path.Combine(bases_generadas, newFileName))) 
      { 
       for (byte j = 0; j < 10; j++) 
       { 
        fs.WriteByte(j); 
       } 
      } 
     } 

    } 

編輯爲@安德烈 - shchekin建議我增加了一個inewFileName所以現在的代碼,這是一個:

string newFileName = "bases_generadas_" + i + 
        DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + ".txt"; 

但現在我運行代碼一次value需要只是3個文件的創建:

bases_generadas_124-04-2013-11-45-08.txt 
bases_generadas_224-04-2013-11-45-08.txt 
bases_generadas_324-04-2013-11-45-08.txt 

爲什麼?

+0

您是否嘗試過調試? 「價值」是797嗎? 'newFileName'每次迭代都會得到新名字? – Guy 2013-04-25 04:15:41

+0

@Guy看到我的編輯 – Reynier 2013-04-25 04:17:15

+0

這是因爲你從'1'運行到'<4' – Guy 2013-04-25 04:17:48

回答

2

由於Reynier表示,您的代碼可以在一秒內執行並最終創建一個文件。

,以避免您可以使用,DateTime.Now.Ticks.ToString()

string newFileName = "bases_generadas_" + DateTime.Now.Ticks.ToString() + ".txt"; 

或者,你可以簡單地使用在該i for循環的唯一名稱

string newFileName = "bases_generadas_" + 
        DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + 
        "-" + i.ToString() + ".txt"; 
2

如果你的代碼足夠快DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss")將導致完全相同的文件名全部797次。

+0

雖然你是正確的我不認爲這是他的正確理由代碼不起作用。 – KyleM 2013-04-25 04:06:17

+0

夠公平,但你沒有提供你的建議。 – 2013-04-25 04:07:40

+0

@AndreyShchekin你確定嗎?我不這麼認爲,因爲每次'i'增加至少'ss'應該取一個新值或不? – Reynier 2013-04-25 04:09:49