2013-04-25 51 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