2016-06-03 12 views
0

Ich bin neu mit C#. Ich habe dieses Stück Code und habe keine Ahnung, warum es nicht funktioniert.Wie öffne ich das zuletzt geänderte Dokument in einer Datei?

Ich habe ein Dokument in einer file, ich habe nicht die file name, aber ich weiß, es ist die zuletzt geänderte file in diesem Verzeichnis.

Ich mag sie öffnen (i kopieren eigentlich nur und Vergangenheit in einem anderen Ordner), aber ich bin nicht sicher, ob diese Datei ausgewählt wird (weil ich es nicht öffnen kann)

Danke.

private void export_Click(object sender, EventArgs e) 
{ 
    var directory = new DirectoryInfo(@"C:\Users\Admin\files"); 
    var myFile = (from f in directory.GetFiles() 
     orderby f.LastWriteTime descending select f).First(); 
    myFile.OpenRead(); 
} 

(PS: System.Diagnostics.Process.Start(myFile) nicht so gut, sagte ungültiges Argument arbeiten, ich weiß nicht, warum ...)

+0

Was ist es, wenn es nicht funktioniert? Irgendwelche Ausnahmen? –

+0

Sie möchten also dieses Dokument in einen anderen Pfad kopieren? – Pikoh

+0

Der Code in Ihrer Frage öffnet die Datei in Ihrer Anwendung - es klingt so, als ob Sie die Datei in ihrem Standardprogramm öffnen möchten (zum Beispiel wird die Datei .docx in MS Word geöffnet). Ist das richtig? –

Antwort

0

Eigentlich funktioniert es für mich auch mit Process.Start(). Aber ich wähle den Ordner "C:\Users\admin\documents", aber das ist egal, wenn der Ordner existiert und Sie die Rechte haben, davon zu lesen.

var directory = new DirectoryInfo(@"C:\Users\admin\documents"); 
var myFile = (from f in directory.GetFiles() 
       orderby f.LastWriteTime descending 
       select f).First(); 
Process.Start(myFile.FullName); 
+1

Funktioniert gut dank ".FullName". Danke vielmals! – jsls

+0

@Jrsls U sind willkommen, froh zu hören, dass es funktioniert. –

0

var myFile = directory.GetFiles() 
      .OrderByDescending(f => f.LastWriteTime) 
      .First(); 

ODER

Versuchen
public static FileInfo GetNewestFile(DirectoryInfo directory) { 
    return directory.GetFiles() 
     .Union(directory.GetDirectories().Select(d => GetNewestFile(d))) 
     .OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime)) 
     .FirstOrDefault();       
} 

Nur rufen Sie es folgendermaßen an:

FileInfo newestFile = GetNewestFile(new DirectoryInfo(@"C:\directory\")); 

und das ist es. Gibt eine FileInfo Instanz oder null zurück, wenn das Verzeichnis leer ist. Und überprüfen Sie auch die access rights für den bestimmten Ordner.

1

Dieser Code sollte für Sie arbeiten, wenn Sie nur die Datei auf einen anderen Pfad kopieren möchten:

private void export_Click(object sender, EventArgs e) 
{ 
    string originPath = @"C:\Users\Admin\files"; 
    string destinationPath = @"d:\"; 
    var directory = new DirectoryInfo(originPath); 
    var myFile = (from f in directory.GetFiles() 
        orderby f.LastWriteTime descending 
        select f).First(); 

    File.Copy(Path.Combine(originPath, myFile.Name), 
       Path.Combine(destinationPath,myFile.Name)); 
} 
Verwandte Themen