0

我试图生成几个文件,所以我写了这段代码,value得到797但我只创建了一个文件,为什么?不应该是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);
                }
            }
        }

    }

编辑为@andrey-shchekin 建议我添加了一个inewFileName所以现在代码是这个:

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

但现在我再次运行代码并value获取4个文件,但只创建了 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

为什么?

4

2 回答 2

2

如果你的代码足够快,DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") 将会产生完全相同的文件名 797 次。

于 2013-04-25T04:05:29.440 回答
2

如前所述Reynier,您的代码可以在一秒钟内执行并最终创建一个文件。

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

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

或者,您可以简单地使用ifor 循环中的唯一名称

string newFileName = "bases_generadas_" + 
                     DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss") + 
                     "-" + i.ToString() + ".txt";
于 2013-04-25T04:18:29.050 回答