2013-12-10 12 views
5

Desidero ottenere un elenco di file in una cartella ordinati in base alla loro data di creazione utilizzando C#.Ottenere un elenco di file in una directory in ordine decrescente per data di creazione utilizzando C#

Sto usando il seguente codice:

 if(Directory.Exists(folderpath)) 
     { 
      DirectoryInfo dir=new DirectoryInfo (folderpath); 
      FileInfo[] files = dir.GetFiles().OrderBy(p=>p.CreationTime).ToArray(); 
      foreach (FileInfo file in files) 
      { 
       ...... 
      } 
     } 

Questo darà l'ordine crescente del tempo di creazione. In realtà voglio ottenere il file creato più di recente nella prima posizione del mio array (ordine discendente).

risposta

19

È possibile utilizzare OrderByDescending

DirectoryInfo dir = new DirectoryInfo (folderpath); 

FileInfo[] files = dir.GetFiles().OrderByDescending(p => p.CreationTime).ToArray(); 
3

DirectoryInfo: espone i metodi di istanza per la creazione, lo spostamento e enumerazione attraverso directory e sottodirectory. Questa classe non può ereditare .

Uso this:

var di = new DirectoryInfo(directory); 
var filesOrdered = di.EnumerateDirectories() 
        .OrderByDescending(d => d.CreationTime) 
        .Select(d => d.Name) 
        .ToList(); 
1

Ecco la versione di Java, proprio come un puntatore per le idee:

protected File[] getAllFoldersByDescendingDate(File folder) 
{ 
    File[] allFiles = folder.listFiles(new FilenameFilter() 
    { 
     @Override 
     public boolean accept(File current, String name) 
     { 
      return new File(current, name).isDirectory(); 
     } 
    }); 
    Arrays.sort(allFiles, new Comparator<File>() 
    { 
     public int compare(final File o1, final File o2) 
     { 
      return Long.compare(o2.lastModified(), o1.lastModified()); 
     } 
    }); 
    if (allFiles == null) 
    { 
     allFiles = new File[]{}; 
    } 
    return allFiles; 
} 
Problemi correlati