生成许多​​文件不起作用

时间:2013-04-25 04:03:14

标签: c# .net

我正在尝试生成多个文件,因此我在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建议我向i添加newFileName,所以现在代码就是这个:

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

为什么?

2 个答案:

答案 0 :(得分:2)

如果您的代码足够快DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss")将导致所有797次完全相同的文件名。

答案 1 :(得分:2)

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

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

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

或者,您只需使用for循环中的i获取唯一名称

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