这里肯定CopyTo()
是行不通的,因为您已将 OverWrite 选项设置为false
(的第二个参数CopyTo()
。如果文件存在并且覆盖为 false,IOException
则通过以下行抛出an:。fi.CopyTo(existfile, false);
检查MSDN
您可以参考以下两个代码来完成相同的任务。你更喜欢哪一个取决于你。任何想法哪个更好?
方法 1:使用File.Copy(), File.Delete()
. 请参阅MSDN_1和MSDN_2
string sourceDir = @"c:\myImages";
string[] OldFileList = Directory.GetFiles(sourceDir, "*.jpg");
foreach (string f in OldFileList)
{
// Remove path from the file name.
string oldFileName = f.Substring(sourceDir.Length + 1);
// Append Current DateTime
String NewFileName= oldFileName + DateTime.Now().ToString();
File.Copy(Path.Combine(sourceDir,oldFileName),
Path.Combine(sourceDir,NewFileName);
File.Delete(oldFileName);
}
在这种情况下,您可以指定相对路径和绝对路径。相对路径将被视为相对于您当前的工作目录。
方法 2:使用FileInfo.MoveTo
. 参考MSDN
protected void btnRenameOldFiles_Click(object sender, System.EventArgs e)
{
string source = null;
//Folder to rename files
source = Server.MapPath("~/MyFolder/");
foreach (string fName in Directory.GetFiles(source)) {
string dFile = string.Empty;
dFile = Path.GetFileName(fName);
string dFilePath = string.Empty;
dFilePath = source + dFile;
FileInfo fi = new FileInfo(dFilePath);
//adding the currentDate
fi.MoveTo(source + dFile + DateTime.Now.ToString());
}
}