2 votes

Vb.Net - Copier des fichiers en fonction d'un modèle

J'ai une table nommée FILELISTS

Table Name - Filelists
Field - FileNames

Valeur des données

  1. Fichier1.txt
  2. Fichier2.csv
  3. Fichier3*.csv

J'ai du mal à écrire le code, comme ci-dessus, s'il a un nom de fichier (comme fichier1.txt et fichier2.txt) il doit être copié de la source à la destination. Si le nom du fichier est un modèle (comme File3*.csv), il faut copier tous les fichiers qui correspondent à ce modèle de la source à la destination.

J'énumère les lignes ci-dessus en Vb.net en utilisant un lecteur de données.

2voto

Tim Schmelter Points 163781

Vous pouvez utiliser Directory.EnumerateFiles y File.Copy par exemple :

var filePatterns = database.GetFileNamePattern(); // your method that returns the list of files
// assuming you've stored the source- and dest.-directories in the app-settings
string sourceFolder = Properties.Settings.Default.SourceFolder;      
string destFolder = Properties.Settings.Default.DestinationFolder;
foreach (string pattern in filePatterns)
{
    var files = Directory.EnumerateFiles(
        sourceFolder,
        pattern,
        SearchOption.TopDirectoryOnly);
    foreach (string file in files)
    {
        File.Copy(file, Path.Combine(destFolder, Path.GetFileName(file)), true);
    }
}

Editar : Désolé, voici la version VB.NET :

' your method that returns the list of files:
Dim filePatterns = database.GetFileNamePattern()  
' assuming you've stored the source- and dest.-directories in the app-settings
Dim sourceFolder As String = My.Settings.SourceFolder
Dim destFolder As String = My.Settings.DestinationFolder
For Each pattern As String In filePatterns
    Dim files = Directory.EnumerateFiles(sourceFolder, pattern, SearchOption.TopDirectoryOnly)
    For Each file As String In files
       IO.File.Copy(file, IO.Path.Combine(destFolder, IO.Path.GetFileName(file)), True)
    Next
Next

0voto

paul Points 141

DirectoryInfo, FileInfo - - Vous avez supprimé votre autre question avant que je puisse cliquer sur post... mais ceci fonctionne avec .net framework 2.0, comme vous l'avez demandé.

Option Strict On
Imports sO = System.IO.SearchOption
Imports dI = System.IO.DirectoryInfo
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For Each F In (New dI("C:\")).GetFiles("*.*", sO.TopDirectoryOnly)
            MsgBox(F.FullName)
            'Do your copy here
        Next
    End Sub
End Class

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X