#43: Spostare un insieme di file in una diversa cartella con VB.NET (anche con LINQ)

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\”)

Ovviamente è possibile passare una qualsiasi parte del nome dei file che vogliamo selezionare, non solo l’estensione. Per esempio:

 

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

 

 

Pubblicato il 8 luglio 2008 su Tips. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: