2011-04-28 5 views
4

documentation에 언급되지 않았지만 Directory.GetDirectories()은 항상 사전 식으로 정렬 된 디렉토리 이름 배열을 반환합니다. 이 구현 세부 사항에 의존하는 것이 안전합니까 (필자의 필요에 적합합니까?) 아니면 편집증을 받고 필요에 따라 디렉토리 목록을 정렬해야합니까?Directory.GetDirectories()가 반환하는 디렉토리의 순서가 정렬되도록 보장됩니까?

[Test] 
public void SortedDirectories() 
{ 
    string[] directories = Directory.GetDirectories(@"C:\Windows"); 
    Assert.That(directories, Is.Ordered); 
} 

답변

6

당신이보고있는 것은 NTFS의 유물입니다. 다른 파일 시스템 (특히 FAT 또는 네트워크 파일 시스템)은 동일한 동작을 나타내지 않을 수 있습니다.

컬렉션을 정렬해야하는 경우 직접 정렬해야합니다 (아마 순서가 맞는지 먼저 확인하십시오. 아마 그럴 가능성이 큽니다). 예를 들어

, 다음의 프로그램 :

using System; 
using System.IO; 
using System.Collections; 

public class Foo 
{ 
    public static void Main(string[] args) 
    { 
     string[] subdirectoryEntries = Directory.GetDirectories(@"j:\"); 

     foreach (string d in subdirectoryEntries) { 
      Console.WriteLine(d); 
     } 
    } 
} 

표시 내 FAT 포맷 J에 대해이 출력 : 드라이브 :

또한
j:\Qualcomm 
j:\Precor 
j:\EditPadPro 
j:\Qt 

, NTFS는 디렉토리 항목을 정렬에도 불구하고, 그것은을 정렬 할 수 있습니다 방법은 원하는 : Old New Thing - Why do NTFS and Explorer disagree on filename sorting?

5

문서화되지 않은 구현 세부 사항이있는 경우 이에 의존해서는 안됩니다. 비록 그것이 사실이라하더라도, 프레임 워크의 차후 버전은 이러한 행동을 유지할 의무가 없습니다.

3

아니! 그것은 NTFS 에서처럼 작동합니다.

우리는 NAS 네트워크 서버 리눅스 실행을 가지고 있고 우리는 불행하게도 혼란스러운 동작을 얻을 ...

는 아마 날짜 액세스하거나 무언가에 의해 정렬하지만 로컬 파티션 또는에서 보는 것이 무엇와 동기화되지 않습니다 NTFS 네트워크 공유 ...

내가 편집증 환자임을 제안하는 이유는 다음과 같습니다. D

관련 문제