2014-04-19 15 views
5

mit dem folgenden Code, kann ich Textdateien zusammenführen, die in einem Verzeichnis vorhandenFilterdateien nach Erstellungsdatum mit C#

var allLines = Directory.GetFiles(directory, "*.txt") 
         .SelectMany(f => File.ReadLines(f)); 
File.WriteAllLines(outputFileName, allLines); 

Wie kann ich es ändern Dateien zusammenführen Schöpfung, die Datum ist heute?

DirectoryInfo info = new DirectoryInfo(""); 
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray(); 

Wie kann ich das Stück Code kombinieren?

Antwort

3
DirectoryInfo info = new DirectoryInfo(directory); 

var allLines = info.GetFiles("*.txt") 
        .Where(p => p.CreationTime.Date == DateTime.Today) 
        .OrderBy(p => p.CreationTime) 
        .SelectMany(p => File.ReadAllLines(p.FullName)); 

File.WriteAllLines(outputFileName, allLines); 
0

Try this:

var allLines = Directory.GetFiles(directory, "*.txt") 
    .Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date) 
    .SelectMany(f => File.ReadLines(f)); 
+0

DateTime.Now bedeutet genau jetzt, nicht "heute" – Andrew

+0

Ich habe bereits verändert es – Dunken

+0

@SriramSakthivel , Sie haben recht, aber es war 'p.CreationTime == DateTime.Now' vor – Andrew

4

Verwenden File.GetCreationTime Methode:

var allLines = Directory.EnumerateFiles(directory, "*.txt", SearchOption.TopDirectoryOnly) 
         .Where(path => File.GetCreationTime(path).Date == DateTime.Today) 
         .SelectMany(f => File.ReadLines(f)); 
+2

'EnumerateFiles' wäre besser zu verwenden als' GetFiles' – Sayse

+0

Ja, Richtig, es fängt an, schneller zu zählen, wartet nicht auf alle Dateien, da es IEnumerable ist. Verpasste dieser, folgte nur der Frage. – Andrew

Verwandte Themen