web-dev-qa-db-fra.com

C # Copier un fichier vers un autre emplacement avec un nom différent

Si certaines conditions sont remplies, je souhaite copier un fichier d'un répertoire à un autre SANS supprimer le fichier d'origine. Je souhaite également définir le nom du nouveau fichier avec une valeur particulière.

J'utilise C # et utilisais la classe FileInfo. Bien qu'il ait la méthode CopyTo. Cela ne me donne pas la possibilité de définir le nom du fichier. Et la méthode MoveTo, tout en me permettant de renommer le fichier, supprime le fichier à son emplacement d'origine.

Quelle est la meilleure manière de s'occuper de ça?

51
shashi
System.IO.File.Copy(oldPathAndName, newPathAndName);
105
Marc Gravell

Vous pouvez aussi essayer la méthode Copy :

File.Copy(@"c:\work\foo.txt", @"c:\data\bar.txt")
29
Darin Dimitrov

Utilisez plutôt la méthode File.Copy

par exemple.

File.Copy(@"C:\oldFile.txt", @"C:\newFile.txt");

Vous pouvez l'appeler comme vous le souhaitez dans le nouveau fichier et le renommer en conséquence.

10
Iain Ward

Si vous voulez utiliser uniquement la classe FileInfo, essayez ceci

             string oldPath = @"C:\MyFolder\Myfile.xyz";
             string newpath = @"C:\NewFolder\";
             string newFileName = "new file name";
             FileInfo f1 = new FileInfo(oldPath);
           if(f1.Exists)
             {
                if(!Directory.Exists(newpath))
                {
                    Directory.CreateDirectory(newpath); 
                }
                 f1.CopyTo(string.Format("{0}{1}{2}", newpath, newFileName, f1.Extension));
             }
9
AsifQadri

Une méthode est:

File.Copy(oldFilePathWithFileName, newFilePathWithFileName);

Ou vous pouvez utiliser la méthode FileInfo.CopyTo () aussi, comme ceci:

FileInfo file = new FileInfo(oldFilePathWithFileName);
file.CopyTo(newFilePathWithFileName);

Exemple:

File.Copy(@"c:\a.txt", @"c:\b.txt");

ou

FileInfo file = new FileInfo(@"c:\a.txt");
file.CopyTo(@"c:\b.txt");
4
Manish
File.Copy(@"C:\oldFile.txt", @"C:\newFile.txt", true);

S'il vous plaît ne pas oublier de remplacer le fichier précédent! Assurez-vous d’ajouter le troisième paramètre. En ajoutant le troisième paramètre, vous autorisez le remplacement du fichier. Sinon, vous pouvez utiliser un catch try pour l'exception.

Cordialement, G

3
TGarrett
StreamReader reader = new StreamReader(Oldfilepath);
string fileContent = reader.ReadToEnd();

StreamWriter writer = new StreamWriter(NewFilePath);
writer.Write(fileContent);
2
Paul Mathews

Vous pouvez utiliser la méthode Copy dans la classe System.IO.File.

1
Martin Hyldahl

La méthode la plus simple que vous pouvez utiliser est la suivante:

System.IO.File.Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName);

Cela prendra soin de tout ce que vous avez demandé.

1
Sam

Vous pouvez utiliser la méthode File.Copy (oldFilePath, newFilePath) ou lire le fichier à l’aide de StreamReader dans une chaîne, puis utiliser StreamWriter pour écrire le fichier à l’emplacement de destination.

Votre code pourrait ressembler à ceci:

StreamReader reader = new StreamReader("C:\foo.txt");
string fileContent = reader.ReadToEnd();

StreamWriter writer = new StreamWriter("D:\bar.txt");
writer.Write(fileContent);

Vous pouvez ajouter un code de gestion des exceptions ...

0
Shekhar