当filename包含括号时,GetFiles返回错误的文件数

时间:2016-10-26 11:32:46

标签: c# getfiles

我需要将文件从一个目录复制到另一个目录,但是如果目标目录中已存在文件名 - 我需要使其唯一,所有文件都需要复制而不会覆盖。

我有以下代码:

String filenameBody = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length);
String fileDup = String.Format("{0}*{1}", filenameBody, fi.Extension);

FileInfo[] fiNotFound = diNotFound.GetFiles(fileDup);

if (fiNotFound.Length > 0)
   newFilename = Path.Combine(diNotFound.ToString(), 
      String.Format("{0}_{1}{2}", filenameBody, fiNotFound.Length + 1,fi.Extension));
else 
    newFilename = Path.Combine(diNotFound.ToString(), fi.Name);

fi.MoveTo(newFilename);
Console.WriteLine(" Not Found");

当文件名包含括号时出现问题,例如(1).pdf当我给它模式(1)*。pdf时,GetFiles只返回一个文件,但我碰巧知道至少有两个 - 所以当调用MoveTo时它失败并且文件已经存在 - 所以如何当文件名是这种模式时,我可以使用GetFiles吗?

0 个答案:

没有答案