2013-12-10 15 views
5

Tôi muốn nhận danh sách tệp trong thư mục được sắp xếp theo ngày tạo bằng C#.Nhận danh sách tệp trong thư mục theo thứ tự giảm dần theo ngày tạo bằng C#

Tôi đang sử dụng đoạn mã sau:

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

này sẽ cung cấp cho các thứ tự tăng dần của thời gian sáng tạo. Tôi thực sự muốn có được tập tin được tạo gần đây nhất ở vị trí đầu tiên của mảng của tôi (thứ tự giảm dần).

Trả lời

19

Bạn có thể sử dụng OrderByDescending

DirectoryInfo dir = new DirectoryInfo (folderpath); 

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

DirectoryInfo: Phơi bày phương pháp dụ để tạo, di chuyển, và liệt kê thông qua các thư mục và thư mục con. Lớp này không thể được thừa kế .

Sử dụng this:

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

Dưới đây là phiên bản Java, giống như một con trỏ cho ý tưởng:

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; 
} 
Các vấn đề liên quan