ファイルを特定のフォルダーにコピーしてから名前を変更する次のコードがあります。その名前のファイルが既に存在する場合、次の例外が発生します。
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");
1つの簡単なオプションは、ファイルが存在する場合は削除することです。
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
を使用する必要があります。その後、ファイルを上書きするか名前を変更する必要がある場合に処理できます。
ステップ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"));