2014-04-29 2 views
0

현재 디렉토리 및 해당 하위 디렉토리의 접두사로 검색 문자열을 가진 모든 파일 및 폴더를 찾아야합니다. 파인더 검색과 동일합니다. NSFileManager를 사용하려했지만 현재 디렉토리에 대해서만 결과를 얻습니다. NSTask를 사용하면 현재 디렉토리 및 하위 디렉토리 내에서 파일/폴더를 가져올 수 있습니다. 하지만 문제는 단일 검색에서 파일과 폴더를 가져올 수 없다는 것입니다. 동시에 둘 다 검색 할 수없는 파일이나 폴더 만 검색 할 수 있습니다.디렉토리 내의 모든 디렉토리/파일 및 코코아의 하위 디렉토리 검색

또한 NStask를 사용하는 경우 일부 간격으로 출력을 가져올 수 없습니다. NStask가 끝나면 결과를 반환합니다. 이미 알림 NSFileHandleDataAvailableNotification을 사용하려고했지만 작업이 완료되면 데이터를 반환합니다.

디렉토리와 파일을 검색 할 수 있도록 다른 방법이 있습니까? 하나의 다른 Application Path Finder가 이미 수행되었습니다. 어떤 사람이 이것을 알고 있다면. 도와주세요. 감사합니다.

답변

1

다양한 방법이 있습니다. "현재 디렉토리"(아마도 사용자가 제공하는 디렉토리)에있는 항목을 찾는 방법 (세부 사항 없음)을 발견했다고 말합니다. 확실한 해결책은 분명히 그것을 사용하는 것이며, 각 항목에 대해 리턴하는 디렉토리가 재귀 적으로 스캔되는 것입니다.

subpathsOfDirectoryAtPath:error:의 모든 항목을 원하면 enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:에 의해 반환되는 열거자를 사용하여 한 번에 하나씩 가져올 수 있습니다. NSFileManager 설명서를 다시 읽으십시오.

HTH

+0

예 재귀가이 작업을 수행하는 옵션입니다. 하지만 재귀의 경우 루트 디렉토리 내의 파일을 검색하면 검색 키워드가있는 루트 디렉토리와 파일을 검색하는 데 너무 많은 시간이 걸립니다. – Surjeet

+0

속도가 걱정된다면 Spotlight가 어떻게 작동하는지 메타 데이터 검색을 할 수 있습니다. [File Metadata Programming Guide] (https://developer.apple.com/library/mac/documentation/carbon/conceptual/spotlightquery/Concepts/Introduction.html)를 참조하십시오. – CRD

관련 문제