2016-08-23 2 views
0

Ich benutze WinForms. Unter meinem "C: \ image \ SourcePath_Folder" Verzeichnis habe ich mehrere Unterordner. Ich möchte nach dem Zufallsprinzip 3 Dateien aus jedem Ordner in ein anderes Verzeichnis mit demselben Namen kopieren.Kopiere zufällig 3 Dateien aus allen Unterverzeichnissen

Hier ist was ich bisher habe. Dies kopiert alle Dateien aus dem Unterverzeichnis in ein anderes Verzeichnis. Der Code wählt nicht zufällig die Dateien aus jedem Unterordner aus. Wie wähle ich die zufälligen Dateien an erster Stelle und wie beschränke ich sie auf nur 3 Dateien?

private void start_btn_Click(object sender, EventArgs e) 
    { 
     //Create all of the directories 
     foreach (string dirPath in Directory.GetDirectories(@"C:\image\SourcePath_Folder\", "*", SearchOption.AllDirectories)) 
     { 
      Directory.CreateDirectory(dirPath.Replace(@"C:\image\SourcePath_Folder\", Destination_txtbox.Text)); 
     } 
     //Copy all the files & Replaces any files with the same name 
     foreach (string newPath in Directory.GetFiles(@"C:\image\SourcePath_Folder\", "*.*", SearchOption.AllDirectories)) 
     { 
      File.Copy(newPath, newPath.Replace(@"C:\image\SourcePath_Folder\", Destination_txtbox.Text), true); 
     } 
    } 

enter image description here

+0

was der Teil Sie auf stecken , genau? –

+0

Bewältigung von 3 zufälligen Dateien aus jedem Unterordner. und sie in ein anderes Verzeichnis einfügen. @ rory.ap – taji01

+0

Nein, genauer gesagt. Was * speziell * weißt du nicht? Sonst wird diese Frage als "zu weit" geschlossen. –

Antwort

1

als ein kleines Kommandozeilen-Version sollte einfach zu bedienen ...

static void Main(string[] args) 
{ 
    int count = 3; 
    string sourcePath = @"C:\image\SourcePath_Folder\"; 
    string targetPath = @"C:\bar\"; 

    Random rnd = new Random(); 
    FileInfo[] randomFiles = new DirectoryInfo(sourcePath).GetFiles("*.*", SearchOption.AllDirectories) 
           .OrderBy(x => rnd.Next()).Take(count).ToArray(); 

    foreach (FileInfo file in randomFiles) 
    { 
    string targetFile = Path.Combine(targetPath, file.Name); 
    Console.WriteLine("copy " + file.FullName + " -> " + targetFile); 
    file.CopyTo(targetFile); 
    } 
} 

btw die usings:

using System; 
using System.IO; 
using System.Linq; 
+0

Ich suchte nach 3 zufälligen Dateien von 'jedem' Unterordner – taji01

+1

dieser Code sucht nach allen Dateien in' @ "C: \ image \ SourcePath_Folder \" 'inklusive Unterordner und wähle 3 Dateien zufällig zum kopieren ... 'int count = 3', Ergebnisse sind in' FileInfo [] randomFiles' hat drei Einträge – MaxKlaxx

+0

Danke für die Erklärung :) – taji01

Verwandte Themen