2010-03-10 2 views
1

Windows 파일 시스템과 동일한 파일 순서를 어떻게 얻을 수 있습니까? 이름, 크기, 마지막으로 수정 한 날짜 시간, 태그 (승리 7), 평가 (승리 7) 등의 많은 파일 시스템 정렬 항목이 있으므로 CFileFind API를 사용하여 Windows 파일 시스템의 정렬 동작을 시뮬레이트하는 경우 매우 어렵습니다. 그럼 어떻게 순서가 Windows 파일 시스템과 동일한 파일을 얻을 수 있습니까 ??Windows 시스템 문제에 대한 질문

답변

0

CFindFile이 무엇인지 모르겠지만 FindFirstFile과 친구가 NTFS 디렉토리에있는 순서대로 파일을 반환합니다. 즉, 가장 바람직 할 이유

나는,

+0

CFindFile 메서드는 FindFirstFile과 비슷하며 둘 다 알파벳순으로 정렬됩니다. 누군가가 IShellFolder API를 사용하도록 제안합니다. IShellFolder 메서드에 익숙한 사람이 있습니까? – user290305

+0

오, 나는 당신의 질문을 이해하지 못했습니다 ... 나는 당신이 파일 시스템 순서대로, 탐색기가 사용하는 순서로 정렬 된 파일을 원하는 줄 알았는데. Explorer는 * 대략 * StrCmpLogicalW와 같은 순서를 사용하므로 파일 이름을 정렬하는 데이 파일을 사용할 수 있습니다. –

+0

Emm, 파일 시스템 순서가 아닌 탐색기와 동일한 파일 순서를 검색하려고합니다. 그러나 탐색기의 파일 순서는 파일 크기, 마지막으로 수정 한 날짜 시간 등으로 사용자가 설계했으며 탐색기에는 많은 정렬 기준이 있으므로 탐색 파일 정렬을 시뮬레이트 할 수 없습니다. 따라서 파일을 StrCmpLogicalW로 정렬하는 것으로는 충분하지 않습니다. – user290305

0

레이몬드 첸 그러나 "Why do NTFS and Explorer disagree on filename sorting?"

에 꽤 상세한 기사를했다 ...하지만, 그것은 누구의 정의에 의해 정확히 "직관적"아니다, 잘 모르겠어요 FindFirstFile()과 그 친척은 실제로 결과를 정렬하지 않는다는 것을 기억하십시오. 파일 시스템이 어떤 순서로든 파일을 돌려주는 것입니다. NTFS는 자체 목적을 위해 주문을하고 있습니다. (주문이 지정되어 있는지 확신 할 수 없습니다. 주문한 것으로 보이는 것은 아마도 행복한 우연 일 것입니다.) FAT 파일 시스템과 네트워크 파일 시스템은 그들 자신의 순서를 가질 것입니다. (또는 순서가 없습니다 - 어떤 순서로든 파일이 디렉토리에있을 수 있습니다 - 나는 FAT 시스템이 그렇게 생각합니다).

FindFirstFile()과 친구들이 반환 한 파일에 대한 특정 주문이 필요한 경우 직접 정렬해야합니다.

FindFirstFile() docs : "FindFirstFile은 검색 결과를 정렬하지 않습니다. 자세한 내용은 FindNextFile을 참조하십시오."

docs for FindNextFile() : "알파벳 순서와 같은 파일 검색이 반환되는 순서는 보장되지 않으며 파일 시스템에 따라 달라집니다. 데이터를 정렬해야하는 경우 응용 프로그램에서 정렬을 수행해야합니다 모든 결과를 얻은 후에. "

CFileFind()는 반환 된 파일 이름의 순서에 대한 약속을하지 않습니다. 어떤 정렬도 수행하면 놀라실 것입니다 (대상 디렉토리에서 가능한 모든 파일을 가져올 수 있기 때문에 첫 번째 파일을 반환 할 수 있기 때문에 놀랐습니다). 그것을 뽑아 라).

+0

Emm, 익스플로러와 동일한 파일 순서를 검색하고 싶지만 익스플로러의 파일 순서는 파일 크기, 마지막으로 수정 한 날짜 시간 등으로 사용자가 설계했으며 탐색기에 정렬 기준이 많기 때문에 탐색 파일 정렬을 시뮬레이트합니다. 그래서 파일 시퀀스를 탐색 할 수있는 방법이 있습니까? – user290305