mario.deghetto

Visual Basic & .NET
posts - 319, comments - 204, trackbacks - 0

#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

Print | posted on venerdì 15 gennaio 2010 5.59 |

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 3 and 8 and type the answer here:

Powered by: