C# 在C中复制文件时检查重复的文件名#
我想将文件复制到一个目录并重命名为特定格式。但是如果文件名已经存在,它应该在文件扩展名之前附加{1}、{2}或{3} 我的代码重命名并复制了该文件,并将其命名为我想要的格式,例如filename.pdf,当它检查是否存在重复时,它将其重命名为filename1.pdf。但当它再次尝试复制时,它给出了一个错误“文件已经存在”,但我希望它将其命名为filename02.pdf 请有人帮我一下 这是我到目前为止编写的代码C# 在C中复制文件时检查重复的文件名#,c#,duplicates,filenames,copying,renaming,C#,Duplicates,Filenames,Copying,Renaming,我想将文件复制到一个目录并重命名为特定格式。但是如果文件名已经存在,它应该在文件扩展名之前附加{1}、{2}或{3} 我的代码重命名并复制了该文件,并将其命名为我想要的格式,例如filename.pdf,当它检查是否存在重复时,它将其重命名为filename1.pdf。但当它再次尝试复制时,它给出了一个错误“文件已经存在”,但我希望它将其命名为filename02.pdf 请有人帮我一下 这是我到目前为止编写的代码 { string fileSource, filesTo
{
string fileSource, filesToCopy, target, nextTarget;
string sourceDir = @"C:\HCP_PDFs";
string destinationDir = @"C:\RenamedHcpPdfs";
DirectoryInfo di = new DirectoryInfo(destinationDir);
// create the directory if it dosnt exist
if (!Directory.Exists(destinationDir))
{
Directory.CreateDirectory(destinationDir);
}
foreach (string myFiles in lstBoxFilenames.Items)
{
filesToCopy = myFiles;
fileSource = Path.Combine(sourceDir, filesToCopy);
//Extract only HCP Name by splitting , removing file Extension and removing HCP ID
string hcp = filesToCopy.Split('_')[0];
string hcpCd = filesToCopy.Split('_')[1];
string hcpID = filesToCopy.Split('_')[2];
string hcpName = String.Format((filesToCopy.Split('_')[3]).Replace(".pdf", ""));
//combine the HCP ID, HCP name and date
target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + ".pdf");
// if file exists in directory then rename and increment filename by 1
int i = +1 ;
nextTarget = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + i + ".pdf");
if (File.Exists(target))
{
File.Copy(fileSource, nextTarget);
break;
}
//if file does not exist, rename
else
{
File.Copy(fileSource, target);
}
}
}
这样做
while(File.Exists(target))
{i++;}
现在声明您的目标路径 试试这个:
string target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}.pdf");
while(File.Exists(target))
{
i++;
target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + i + ".pdf");
}
File.Copy(fileSource, target);
break;
Thx,请点击我的帖子作为其他人的“回复解析帖子”;)(我答案前面的检查)就是这样做的,当我能够使用您的建议解决它时,我正在寻找它。使用while循环迭代,直到找不到包含target+i.ToString()的文件,然后将您的目标重命名为target+i.ToString()