[英]Rename existing file name
我有以下代碼將文件復制到特定文件夾,然后重命名它。 當具有該名稱的文件已存在時,我收到以下異常:
Cannot create a file when that file already exists
有沒有辦法覆蓋文件並重命名? 或者我應該刪除舊的然后更改名稱?
這是我的代碼:
File.Copy(FileLocation, NewFileLocation, true);
//Rename:
File.Move(Path.Combine(NewFileLocation, fileName), Path.Combine(NewFileLocation, "File.txt"));
盡量只使用:
if (File.Exists("newfilename"))
{
System.IO.File.Delete("newfilename");
}
System.IO.File.Move("oldfilename", "newfilename");
一個簡單的選項是刪除文件(如果存在):
if (System.IO.File.Exists(newFile)) System.IO.File.Delete(newFile);
System.IO.File.Move(oldFile, newFile);
這樣的事情應該有效。
你是對的,如果/當文件名已存在時, File.Move
將拋出IOException
。 因此,為了克服這一點,您可以在移動前進行快速檢查。 例如
if (File.Exists(destinationFilename))
{
File.Delete(destinationFilename);
}
File.Move(sourceFilename, destinationFilename);
您應該使用File.Exists
而不是讓Exception拋出。 然后,您可以處理文件是否應該被覆蓋或重命名。
步驟1:作為第一步,在復制文件之前識別文件是否存在。
使用File.Exists()
方法
步驟2:如果文件已存在同名,則使用File.Delete()
方法刪除現有文件
第3步:現在使用File.Copy()
方法將文件復制到新位置。
第4步:重命名新復制的文件。
嘗試這個:
string NewFilePath = Path.Combine(NewFileLocation, fileName);
if(File.Exists(NewFilePath))
{
File.Delete(NewFilePath);
}
//Now copy the file first
File.Copy(FileLocation, NewFileLocation, true);
//Now Rename the File
File.Move(NewFilePath, Path.Combine(NewFileLocation, "File.txt"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.