2009-09-07 6 views
4

VSTS 2008 + C# + .Net 3.0을 사용하고 있습니다. 나는 디렉토리에있는 모든 파일을 생성 시간별로 열거하고 싶다. 즉, 가장 최근에 생성 된 파일은 처음에는 enumarate 될 것이고, 더 오래된 파일은 마침내 열거 될 것이다. 어떤 아이디어를 내포하는 방법?C# 디렉터리 파일의 파일 목록

답변

6

뭔가 그

 

System.IO.FileInfo[] array = new System.IO.DirectoryInfo("directory_path").GetFiles(); 
Array.Sort(array, delegate(System.IO.FileInfo f1, System.IO.FileInfo f2) 
      { 
       return f2.CreationTimeUtc.CompareTo(f1.CreationTimeUtc); 
      }); 
 
+1

질문에 따라 가장 최근의 파일을 갖도록 주문을 되돌릴 필요가 없습니까? –

+0

세드릭, 당신 말이 맞아요. 감사. –

+1

두 번째 포인트 : VS2008을 사용하면 2.0 또는 3.0에서도 람다를 사용할 수 있습니다! 읽기 쉽게 ... 그러나 빌드 프로세스에서 MsBuild 3.5 (예 : CI 서버 사용)를 사용하는 경우에만 사용할 수 있습니다. –

4

아마 LINQ와 목록 ...이 같은 일을해야 사용하는 것이이 같은 somithing 시도

DirectoryInfo di = new DirectoryInfo("YourPath"); 
List<FileInfo> files = di.GetFiles().OrderBy(f => f.CreationTime).ToList(); 

foreach (FileInfo file in files) 
     { 
      //do something 
     } 
+0

죄송합니다 .Net 3.0을 사용하고 있습니다. LINQ를 사용할 수 없습니다. 모든 .Net 3.0 기반 솔루션? – George2

2

같은 :

DirectoryInfo di = new DirectoryInfo("path to folder"); 
FileInfo[] files = di.GetFiles(); 
IOrderedEnumerable<FileInfo> enumerable = files.OrderBy(f => f.CreationTime); 

foreach (FileInfo info in enumerable) 
{ 
    // do stuff...   
} 
+0

죄송합니다 .Net 3.0을 사용하고 있습니다. LINQ를 사용할 수 없습니다. 모든 .Net 3.0 기반 솔루션? – George2

-1
DirectoryInfo baseFolder=new DirectoryInfo("folderName"); 
FileInfo[] files=baseFolder.GetFiles(""); 
for(int i=1; i<=files.Length;i++) 
for(int j=1; j<files.Length;j++) 
{ 
    if(files[j].CreationTime > files[j+1].CreationTime) 
    { 
     FileInfo f = files[j]; 
     files[j] = files[j+1]; 
     files[j+1] = f; 
    } 
} 
+0

프레임 워크가 콜렉션을 주문하기에 많은 것을 가지고 있기 때문에 나는 모든 것을 다시 써야한다는 것을 알지 못합니다! –

2

편집 :, 여기에 위의 가장 오래된 최신별로 정렬됩니다 비 LINQ 솔루션

FileInfo[] files = new DirectoryInfo("directory").GetFiles(); 
Array.Sort(files, delegate(FileInfo f1, FileInfo f2) { 
    return f2.CreationTime.CompareTo(f1.CreationTime); 
}); 

에게의 업데이트되었습니다. return f1.CreationTime.CompareTo(f2.CreationTime);


LINQ 솔루션 : 최근의 변화에 ​​위임 가장 오래된로 정렬하려면

FileInfo[] files = new DirectoryInfo("directory").GetFiles(); 
var results = files.OrderByDescending(file => file.CreationTime); 

사용 OrderByDescending 가장 최근 CREATIONTIME을하여 정렬을 달리하는 가장 오래된 최신 CREATIONTIME에서 정렬 할 수있는 OrderBy를 사용합니다.

+1

다른 답변에 대한 사용자 의견에 기반한 비 LINQ 솔루션 추가 –

관련 문제