J'ai le code suivant qui copie un fichier dans un dossier spécifique puis le renomme. Lorsqu'un fichier portant ce nom existe déjà, j'obtiens l'exception suivante:
Cannot create a file when that file already exists
Existe-t-il un moyen d'écraser le fichier et de le renommer? ou devrais-je supprimer l'ancien, puis changer le nom?
Voici mon code:
File.Copy(FileLocation, NewFileLocation, true);
//Rename:
File.Move(Path.Combine(NewFileLocation, fileName), Path.Combine(NewFileLocation, "File.txt"));
Essayez d'utiliser uniquement:
if (File.Exists("newfilename"))
{
System.IO.File.Delete("newfilename");
}
System.IO.File.Move("oldfilename", "newfilename");
Une option simple consiste à supprimer le fichier s'il existe:
if (System.IO.File.Exists(newFile)) System.IO.File.Delete(newFile);
System.IO.File.Move(oldFile, newFile);
Quelque chose comme ça devrait fonctionner.
Vous avez raison, File.Move
lancera un IOException
si/quand le nom de fichier existe déjà. Donc, pour surmonter cela, vous pouvez effectuer une vérification rapide avant le déménagement. par exemple.
if (File.Exists(destinationFilename))
{
File.Delete(destinationFilename);
}
File.Move(sourceFilename, destinationFilename);
Tu devrais utiliser File.Exists
plutôt que de laisser le lancer d'exception. Vous pouvez alors gérer si le fichier doit être remplacé ou renommé.
Étape 1: dans un premier temps, identifiez si le fichier existe ou non avant de le copier.
en utilisant la méthode File.Exists()
Étape 2: si le fichier existe déjà avec le même nom, supprimez le fichier existant en utilisant la méthode File.Delete()
Étape 3: copiez maintenant le fichier dans le nouvel emplacement à l'aide de la méthode File.Copy()
.
Étape 4: Renommez le fichier nouvellement copié.
Essaye ça:
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"));