C# 重命名现有文件名
我有下面的代码,它将一个文件复制到一个特定的文件夹,然后重命名它。 当具有该名称的文件已存在时,我会出现以下异常:C# 重命名现有文件名,c#,.net,file-io,C#,.net,File Io,我有下面的代码,它将一个文件复制到一个特定的文件夹,然后重命名它。 当具有该名称的文件已存在时,我会出现以下异常: Cannot create a file when that file already exists 有没有办法覆盖文件并重命名它?或者我应该删除旧的,然后更改名称 这是我的密码: File.Copy(FileLocation, NewFileLocation, true); //Rename: File.Move(Path.Combine(NewFileLocation,
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);
类似的方法应该可以使用。您应该使用,而不是让异常抛出。然后,您可以处理文件是否应该重写或重命名 步骤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"));
如果文件名已经存在,您将抛出一个IOException
。因此,为了克服这一问题,您可以在移动前执行快速检查。e、 g
if (File.Exists(destinationFilename))
{
File.Delete(destinationFilename);
}
File.Move(sourceFilename, destinationFilename);
我总是与标志MOVEFILE\u REPLACE\u EXISTING一起使用
限制:
为什么要删除旧的?Move应该将其重命名为“原地”。正如Jeff所说,为什么要删除它?为什么不重命名它或者给你的新文件增加一个名字呢@PaulZahra我认为他的意思是删除任何现有的文件,但这在帖子中并不清楚。请不要编辑你的代码来获得答案,没有这个答案已经够让人困惑的了,但现在看起来你已经问了一个问题,而这个问题已经包含了答案,甚至更让人困惑!在将答案放入问题时,至少要将其标记为编辑。这没有帮助-当尝试将文件移动到存在同名文件的文件夹时,会出现异常失败。事实上,这与OP的尝试相同。您不需要使用该文件。请在之前复制。@LucasabileDB:如果文件已存在,您将收到
IOException
(请参阅)。但不要以为它会成功。先验检查是一种优化,但不是很好的控制。当然,根据用例,没有任何东西可以保证在移动时没有目标文件。