2016-06-11 4 views
0

Ich versuche, alle Dateien, die in den letzten 24 Stunden geändert wurden in ein neues Verzeichnis zu kopieren. Ich habe eine Methode, die bestimmt, welche Dateien kopiert werden sollen, aber ich habe Probleme, sie tatsächlich zu kopieren. Hier ist, was ich habe:Versuchen, eine einfache Möglichkeit zum Kopieren bestimmter Dateien in ein neues Verzeichnis mit C#

ModifiedFiles newFiles = new ModifiedFiles(); 
targetPath = @"C:\Users\Student\Desktop\Home Office"; 
foreach (var file in newFiles.modified()) 
    File.Copy(file, Path.Combine(targetPath, Path.GetFileName(file)), true); 

Path.GetFileName() will einen String statt ein FileInfo Objekt (Datei), aber wenn ich .ToString(), um es hinzuzufügen, wird File.Copy() wütend, dass seine „Datei“ zu keinem String.

Ich bin neu in C# (wenn man nicht sagen kann!) Und hier im Wesentlichen zwei Fragen:

  1. Wie kann ich diese Arbeit machen?
  2. Warum muss ich den vollständigen Pfad + Dateiname der Zieldatei überhaupt erstellen? Es scheint komisch, dass ich nicht einfach angeben kann, welche Dateien verschoben werden sollen, und ihnen sagen, wohin sie gehen sollen, ohne sich darum zu kümmern, explizit anzugeben, wie sie heißen sollen, wenn sie dort ankommen. Es sei denn, ich lese es falsch? Ich habe auf der MSDN-Website und Stack Overflow herumgestöbert und die meisten Leute scheinen mir zuzustimmen, dass dies der richtige Weg ist.
+1

Anstatt Path.GetFileName (Datei) zu verwenden, können Sie nicht einfach file.Name verwenden? –

Antwort

0

Die File.Copy Methode akzeptiert vollständige Dateipfade für die Quelle und das Ziel, wenn Sie also FileInfo verwenden, werden Sie die Name und FullName Eigenschaften verwenden möchten.

File.Copy(file.FullName, Path.Combine(targetPath, file.Name), true); 

Auch als allgemeine Regel, Sie wollen nicht nur ToString() auf ein Objekt rufen und hoffen, dass es etwas Sinnvolles zurückgibt. Eine Klasse kann überschreiben ToString() und einen Wert zurückgeben, oder es kann nicht und der Wert, den Sie zurück erhalten, ist einfach der Klassentyp. Überprüfen Sie zuerst die Dokumentation.

+0

Schön, funktioniert perfekt. Danke für die Information! –

+0

Freut mich zu hören! Bitte. –