Per spostare un file da una cartella a un’altra, possiamo utilizzare semplicemente il metodo My.Computer.FileSystem.MoveFile.
Il problema consiste nel fatto che questo metodo non consente di utilizzare i caratteri jolly e quindi non possiamo eseguire questa istruzione:
My.Computer.FileSystem.MoveFile( _
“C:\Test1\*.jpg”, “C:\Test2\*.jpg”)
Abbiamo quindi la necessità di recuperare prima di tutto i nomi di tutti i file che rispondono a un determinato schema come *.jpg, poi potremo spostare i file singolarmente, utilizzando un ciclo For Each:
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
‘ creazione array con elenco file *.jpg:
Dim d As New DirectoryInfo(“C:\Test1″)
Dim f As FileInfo() = d.GetFiles(“*.jpg”)
‘ ciclo di spostamento:
For Each fNext In f
My.Computer.FileSystem.MoveFile( _
“C:\Test1\” & fNext.Name, _
“C:\Test2\” & fNext.Name)
Next
End Sub
End Class
Da qui possiamo poi creare una procedura riutilizzabile più volte, inserendola in un modulo di codice:
Imports System.IO
Module Utility
Public Sub spostaGruppoFile(ByVal nomeFile As String, _
ByVal dir1 As String, ByVal dir2 As String)
‘ creazione array con elenco file *.jpg:
Dim d As New DirectoryInfo(dir1)
Dim f As FileInfo() = d.GetFiles(nomeFile)
‘ ciclo di spostamento:
For Each fNext In f
My.Computer.FileSystem.MoveFile( _
dir1 & fNext.Name, _
dir2 & fNext.Name)
Next
End Sub
End Module
Tale procedura può essere chiamata semplicemente come segue, passando il nome del file o lo schema (con i caratteri jolly), la cartella di origine e la cartella di destinazione:
spostaGruppoFile(“*.jpg”, “C:\Test1\”, “C:\Test2\”)
Imports System.IO
Module Utility
Public Sub spostaGruppoFile(ByVal nomeFile As String, _
ByVal dir1 As String, ByVal dir2 As String)
‘ creazione array con elenco file:
Dim d As New DirectoryInfo(dir1)
Dim f = From elenco In d.GetFiles(nomeFile) _
Select elenco.Name
‘ ciclo di spostamento:
For Each fNext In f
My.Computer.FileSystem.MoveFile( _
dir1 & fNext, _
dir2 & fNext)
Next
End Sub
End Module