2013-05-08 1 views
0

Je souhaite copier, renommer et déplacer un fichier vers un nouvel emplacement. Selon http://msdn.microsoft.com/en-us/library/36xbexyf(v=vs.90).aspx le code suivant devrait le faire:Meilleure façon de copier Déplacer Renommer le fichier, Visual Basic (VS 2012 V11)

Cet exemple copie le fichier Test.txt dans le répertoire TestFiles2 et renomme NEWFILE.TXT.

My.Computer.FileSystem.CopyFile _ 
("C:\UserFiles\TestFiles\test.txt", _ 
"C:\UserFiles\TestFiles2", "NewFile.txt", FileIO.UICancelOption.DoNothing) 

Cependant, quand je tape ce code, il ne voit que le paramètre « NEWFILE.TXT » comme paramètre booléen qui gère les écrasements. Je crois que c'est une erreur sur la partie sites Web.

Si je ne peux pas utiliser « My.Computer.FileSystem.CopyFile » (à moins que je fais quelque chose de mal) pour copier renommer et déplacer un fichier, est-il une meilleure façon alors ceci:

' Rename the file to be copied the name you want it to be in the new location 
My.Computer.FileSystem.RenameFile("C:\OriginalFile.txt", "OriginalFileTemporaryName.txt") 

' Copy the file to the new location and overwrite if it exists there 
My.Computer.FileSystem.CopyFile ("C:\OriginalFileTemporaryName.txt", "C:\UserFiles\TestFiles2", True) 

' Rename the original file back to it's original name 
My.Computer.FileSystem.RenameFile("C:\OriginalFileTemporaryName.txt", "OriginalFile.txt") 

Le problème que j'ai avec ce qui précède est que je pourrais finir par renommer le fichier original un nom temporaire qui existe déjà dans l'emplacement des fichiers d'origine. Je veux éviter cela. Je ne veux pas non plus renommer le fichier copié dans le dossier de destination car je ne vois pas une option pour forcer un écrasement pour "My.Computer.FileSystem.RenameFile"

Est-ce que c'est une solution moitié acceptable? N'y a-t-il pas une meilleure façon de le faire?

Répondre

1

Cela ressemble certainement à une erreur sur le site Web. Cela ne devrait pas nous arrêter, cependant; il suffit de mettre le répertoire et le nom dans le même paramètre:

My.Computer.FileSystem.CopyFile("C:\UserFiles\TestFiles\test.txt", "C:\UserFiles\TestFiles2\NewFile.txt", FileIO.UICancelOption.DoNothing) 

(Si vous voulez forcer l'écrasement, changer le troisième paramètre à True Je ne sais pas que vous pouvez écraser et passer CancelOption.DoNothing dans le même appel. .)

2

Je pense que vous avez une erreur de syntaxe. Vous essayez de donner le nom du fichier cible sous la forme de deux paramètres - nom du répertoire et nom du fichier, lorsque vous devez donner les deux en une seule chaîne.

My.Computer.FileSystem.CopyFile ("C:\UserFiles\TestFiles\test.txt", "C:\UserFiles\TestFiles2\NewFile.txt") 

Comme cela. Le troisième paramètre peut être booléen (Vrai/Faux) - si vous souhaitez ou non remplacer le fichier cible s'il existe.

Si vous voulez d'abord vérifier si le fichier existe, jetez un oeil à la classe System.IO.File, il a la méthode "Exists", qui accepte le nom de fichier et renvoie boolean. Il a également des méthodes pour manipuler les fichiers que vous pouvez utiliser à la place de la classe FileSystem, bien qu'il n'y ait aucun avantage de performance.

Questions connexes