2012-09-11 42 views
0

我有一个应用程序,我通过点击生成报告按钮在所有材料的末尾生成报告。报告以Excel格式生成。问题是,无论何时创建一个报告,我都可以在同一位置创建另一个具有相同名称的报告。它基本上覆盖了第一份报告。生成输出文件的副本

我想给用户一个方框说你可以生成一个具有相同名称或名称的报告,并选择一个不同的名称。

感谢您的帮助!

+1

为什么不把时间戳追加到文件名? –

回答

2

就在你保存文件之前,你应该知道你要保存的文件名是什么。如果是这样,那就测试一下文件是否已经存在。如果确实如此,则提示用户输入新名称并将其保存为新名称,例如,

string filename = @"C:\File.txt"; 

if(File.Exists(filename)){ 
    // Prompt for new one. 
    // save the report to the new name instead.  
}else 
{ 
    // save to filename 
} 
1

在保存文件之前,请检查具有此名称的文件是否已存在,如果存在,请提供重命名文件。类似这样的:

if(File.Exists(proposedFileName)){ 
    showDialog("file exists, please choose other name"); 
} 
-1

创建您可以通过现有的文件迭代,并检查名称是否已经存在,并给予适当的错误信息报表之前。

  string newFileName = "new file"; 
      string[] fileNames = Directory.GetFiles("path"); 

      foreach (string file in fileNames) 
      { 
       if (file == newFileName) 
       { 
        MessageBox.Show("Error"); 
        break; 
       } 
      } 
+2

File.Exists()只为你做。 – trailmax

1

我总是做DarkXphenomenon的建议,我一个mildate时间戳追加到形式的文件名:

<filename>_YYMMDD_HHMMSS.ext 

虽然这岂不等于rught每一种情况,它有很多的优点:

  1. 它的简单,它的工作原理

  2. 它节省了我不必编写各种类型的回转信息,以便与用户在名称,覆盖,重命名,取消等之间来回切换。通常情况下,代码从未打算具有用户界面。

  3. 它使自动化更容易。

  4. 它使测试更容易。

  5. 它使诊断用户问题变得更加容易:无论是何时创建文件或创建文件的顺序如何,