Bonjour,
Cela fait plus de nombreux jours que je cherche comment réussir à renommer des fichiers dans mon application.
Je dispose du nom du dossier (sélectionné avec un FolderBrowserDialog) dans la variable
mstrWorkingPath (String)
Je renseigne une listbox avec GetFiles comme ceci:
1 2 3 4
| For Each foundFile As String In My.Computer.FileSystem.GetFiles(mstrWorkingPath)
Me.LstFileList.Items.Add(FicExtract(foundFile))
'(Remarque = FicExtract extrait juste le nom de fichier de la chaine de caractère contenant dossier + nom de fichier)
Next |
Pour chaque fichier dans la listbox (nommé
strFicNameSource), je construit un nouveau nom de fichier (
strFicNameTarget), puis j'effectue le renommage comme ceci:
1 2
| My.Computer.FileSystem.RenameFile(PathFileBuild(mstrWorkingPath, strFicNameSource), strFicNameTarget)
'(Remarque = PathFileBuild construit juste le chemin complet dossier + nom de fichier) |
Dès que tu utilises une fonction de lecture/écriture assure toi de toujours fermer la lecture/écriture une fois l'action fini c'est pour ça que tu ne peux pas les renommer
J'obtiens l'erreur suivante:
1 2
| An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus. |
J'ai la très nette impression que le simple fait de renseigner la listbox avec GetFiles bloque l'accès en écriture aux fichiers qui sont considérés comme "verrouillés par un autre processus".
Comment puis-je renseigner ma listbox autrement, ou bien comment "libérer" les fichiers avant de les renommer.
J'ai essayé de vider (méthode Clear) la listbox avant le renommage, mais ça ne change rien !
Merci d'avance pour votre aide
Partager