web-dev-qa-db-fra.com

Renommer le nom de fichier existant

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"));               
11
user1016179

Essayez d'utiliser uniquement:

if (File.Exists("newfilename"))
{
    System.IO.File.Delete("newfilename");
}

System.IO.File.Move("oldfilename", "newfilename");
25
Only a Curious Mind

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.

9
drew_w

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);
5
Brad Christie

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é.

3
Darren

É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")); 
2
Sudhakar Tillapudi