J'ai besoin de copier un fichier dans un autre chemin, en laissant l'original à son emplacement actuel.
Je veux aussi pouvoir renommer le fichier.
La méthode FileInfo CopyTo fonctionnera-t-elle?
Regardez File.Copy ()
À l'aide de File.Copy, vous pouvez spécifier le nouveau nom de fichier dans la chaîne de destination.
Donc quelque chose comme
File.Copy(@"c:\test.txt", @"c:\test\foo.txt");
Voir aussi Procédure: copier, supprimer et déplacer des fichiers et des dossiers (Guide de programmation C #)
J'ai essayé de copier un fichier XML d'un emplacement à un autre. Voici mon code:
public void SaveStockInfoToAnotherFile()
{
string sourcePath = @"C:\inetpub\wwwroot";
string destinationPath = @"G:\ProjectBO\ForFutureAnalysis";
string sourceFileName = "startingStock.xml";
string destinationFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xml"; // Don't mind this. I did this because I needed to name the copied files with respect to time.
string sourceFile = System.IO.Path.Combine(sourcePath, sourceFileName);
string destinationFile = System.IO.Path.Combine(destinationPath, destinationFileName);
if (!System.IO.Directory.Exists(destinationPath))
{
System.IO.Directory.CreateDirectory(destinationPath);
}
System.IO.File.Copy(sourceFile, destinationFile, true);
}
Puis j'ai appelé cette fonction dans une fonction timer_elapsed d'un certain intervalle que je pense que vous n'avez pas besoin de voir. Ça a marché. J'espère que cela t'aides.
Oui. Cela fonctionnera: FileInfo.CopyTo, méthode
Utilisez cette méthode pour autoriser ou empêcher le remplacement d’un fichier existant. Utilisez la méthode CopyTo pour empêcher le remplacement d'un fichier existant par défaut.
Toutes les autres réponses sont correctes, mais puisque vous avez demandé FileInfo
, voici un exemple:
FileInfo fi = new FileInfo(@"c:\yourfile.ext");
fi.CopyTo(@"d:\anotherfile.ext", true); // existing file will be overwritten
Vous pouvez également utiliser File.Copy
pour copier et File.Move
pour le renommer.
// Copy the file (specify true or false to overwrite or not overwrite the destination file if it exists.
File.Copy(mySourceFileAndPath, myDestinationFileAndPath, [true | false]);
// EDIT: as "astander" notes correctly, this step is not necessary, as File.Copy can rename already...
// However, this code could be adapted to rename the original file after copying
// Rename the file if the destination file doesn't exist. Throw exception otherwise
//if (!File.Exists(myRenamedDestinationFileAndPath))
// File.Move(myDestinationFileAndPath, myRenamedDestinationFileAndPath);
//else
// throw new IOException("Failed to rename file after copying, because destination file exists!");
MODIFIER
Commenté le code "renommer", car File.Copy
peut déjà copier et renommer en une étape, comme astander l’a noté correctement dans les commentaires.
Toutefois, le code de changement de nom pourrait être adapté si l’opérateur souhaitait renommer le fichier source après sa copie dans un nouvel emplacement.
File :: Copy va copier le fichier dans le dossier de destination et File :: Move peut à la fois déplacer et renommer un fichier.
string directoryPath = Path.GetDirectoryName(destinationFileName);
// If directory doesn't exist create one
if (!Directory.Exists(directoryPath))
{
DirectoryInfo di = Directory.CreateDirectory(directoryPath);
}
File.Copy(sourceFileName, destinationFileName);
C'est ce que j'ai fait pour déplacer un fichier de test des téléchargements sur le bureau. J'espère que c'est utile.
private void button1_Click(object sender, EventArgs e)//Copy files to the desktop
{
string sourcePath = @"C:\Users\UsreName\Downloads";
string targetPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string[] shortcuts = {
"FileCopyTest.txt"};
try
{
listbox1.Items.Add("Starting: Copy shortcuts to dektop.");
for (int i = 0; i < shortcuts.Length; i++)
{
if (shortcuts[i]!= null)
{
File.Copy(Path.Combine(sourcePath, shortcuts[i]), Path.Combine(targetPath, shortcuts[i]), true);
listbox1.Items.Add(shortcuts[i] + " was moved to desktop!");
}
else
{
listbox1.Items.Add("Shortcut " + shortcuts[i] + " Not found!");
}
}
}
catch (Exception ex)
{
listbox1.Items.Add("Unable to Copy file. Error : " + ex);
}
}