如何确保外部进程创建新文件而不是覆盖它?

时间:2015-03-11 09:20:15

标签: c# asp.net

下面是我用来在我的目标文件夹上编写文件的代码,如果我想要创建一个具有不同数据的相同文件,那么它将被覆盖在那个位置上。

我的要求不是覆盖文件,而是保留旧文件,并创建具有相似名称的新文件,但只需添加下一个副本,例如my_file.pdf(1)或类似的东西

ProcessStartInfo startInfo = new ProcessStartInfo();
string switches = "";
switches += "--header-html " + path + " --footer-html " + footerPath;// + " --header-spacing 10";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
startInfo.FileName = Server.MapPath(ConfigurationManager.AppSettings["wkhtmltopdfsetup"].ToString());
startInfo.Arguments = switches + " " + website + " " + destinationFile;

Process myProcess = Process.Start(startInfo);
string error = myProcess.StandardError.ReadToEnd();
myProcess.WaitForExit();
myProcess.Close();
myProcess.Dispose();
myProcess = null;

2 个答案:

答案 0 :(得分:0)

您可以执行类似

的操作
//Save file if one does not exist
if (!File.Exists("Your File"))
{
   //Save file code here
}

//if file exist then add a datetime stamp to the file name so it does not overwrite the old one
else
{
  string newFileName =
  Path.Combine(Path.GetDirectoryName("path of the file"),
  string.Concat(Path.GetFileNameWithoutExtension("your file"), 
  DateTime.Now.ToString("_yyyy_MM_dd_HH_mm_ss"), 
  Path.GetExtension("your file")));
  //Save new file code here
 }

答案 1 :(得分:0)

您可以先将现有文件的大小与新文件的大小进行比较。如果它们不同,则文件不同。比较结束于此,您无需进一步(使用更多的处理时间)。如果他们不这样做,他们可能是相同的但我们不能确定。根据文件可能不同的方式,您可以只比较一大块文件内容。如果差异在文档的最后或开头非常小或独占,则相应地进行比较。更糟糕的情况是,你必须比较整个文件。