디렉토리 탐색
글쓴이: 나는오리 / 작성시간: 월, 2005/11/14 - 1:03오전
윈도우의 익스플로러(이하 탐색기) 이야기입니다.
예전에 제가 지정된 디렉토리의 하위 디렉토리를 검색하면서 파일을 수정하는 프로그램을 만들었는데
재귀함수를 이용하였습니다.
(사실 재귀함수만으로 한것은 아니지만요)
그런데 써보신 분은 아시겠지만
탐색기의 폴더 트리를 보면 금방 금방 하위 디렉토리를 불러오잖아요.
제가 root부터 모든 디렉토리를 긁어봤는데 시간이 엄청 걸리더라고요.
혹시 윈도의 탐색기는 어떤 방법으로 폴더를 긁어오는지 아시는분 계신가요?
제가 디렉토리 리스트를 긁어오면서 딴짓도 쪼금 해서그런건지 확실히 모르겠네요.
어느분의 말씀에 의하면 "탐색기는 위대해"라고 하시던데 ㅡ.,ㅡ;
자세한건 안가르쳐 주더군요.
디렉토리 리스트를 긁어오는 방법중에 재귀탐색을 이용해서 직접 긁어오는것과
dir(ls)와 같은 명령으로 긁어오는 것
이 두가지 이외에 좋은 방법이 따로 또 있을까요?
Forums:
directory와 같은 다량의 tree 정보를 disk에서 읽어올때는
directory와 같은 다량의 tree 정보를 disk에서 읽어올때는 보통 caching과 lazy loading?과 같은 꽁수를 씁니다. 벌써 눈치채셨을 지 모르지만, caching은 미리 디렉토리 정보를 읽어 두고 그 것을 그대로 쓰는 것이고 (따라서 실제 내용과 약간의 오차가 발생할 수 있음), lazy loading은 전체 디렉토리 정보를 다 scan하는 것이 아니라, 필요한 만큼만 읽어들인 후, 나중에 필요한 경우, 다시 일부분을 읽어오는 방식입니다.
예를 들어 최상위 디렉토리를 표시할 때에는 root와 바로 그 밑 디렉토리까지 읽어들여서 화면에 root에 딸린 subdirectory들을 표시합니다. 루트 바로 밑 디렉토리의 내용까지 읽는 이유는 탐색기와 같은 프로그램은 하위 디렉토리가 있는지 없는지 여부를 앞에 [+] [-] 기호로 표시하기 때문입니다. (물론 실제 탐색기는 서브 디렉토리가 없어도 [+] 기호를 보여줄 때가 많습니다만... :evil: )
또한 일단 읽어들인 디렉토리 정보는, 여간해서 다시 읽지 않는 능력?이 필요합니다. 복사, 이동과 같은 것은 읽어들인 디렉토리 트리에서 바로 작업을 수행하고, 또 OS에서 파일이 변경되었다는 것을 application으로 알려주는 방법이 있을 때에만 다시 읽어들입니다.. (Windows는 이런 message가 있는 것으로 알고 있습니다.)
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
탐색기는 모든 하위폴더를 전부 검색후에 표시하지 않습니다.그때그때 필
탐색기는 모든 하위폴더를 전부 검색후에 표시하지 않습니다.
그때그때 필요할때 할겁니다.
프로그램상에서 하위폴더 검색해서 작업하는것은
원래 시간이 걸리는 일이죠..
^^ be cool ~
http://fromdj.pe.kr
See "Professional Visual C++ Windows She
See "Professional Visual C++ Windows Shell Programming" written by Dino Esposito
윈도우 탐색기의 속도는 알고리즘 문제와 더불어 "윈도우 쉘"을 얼마나 잘 이용하느냐가 관건입니다. 탐색기를 구현하는 데에는 IShellFolder와 PIDL 등을 이해해야 합니다. 처음에는 개념이 생소하겠지만, 위에서 소개한 책을 여러 번 정독하면 금새 이해할 수 있을 것입니다.
대충은 예상대로네요.답변해주신 모든분들께 감사드립니다.나중에
대충은 예상대로네요.
답변해주신 모든분들께 감사드립니다.
나중에 톰색기나 만들어봐야겠군요.
[quote="cinsk"]또한 일단 읽어들인 디렉토리 정보는, 여간해서
리눅스엔 fam 이 있죠 :)
http://oss.sgi.com/projects/fam/
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
2K3에서는 CIDAEMON이라는놈이 파일을 인덱싱 하는것 같더군요. ㅡ
2K3에서는 CIDAEMON이라는놈이 파일을 인덱싱 하는것 같더군요. ㅡ.,ㅡ;
[quote="욕심많은오리"]대충은 예상대로네요.답변해주신 모든분들께
원래 개그맨 아니심?
권위를 의심할 것,어긋남을 존경할 것,자리잡기를 거부할 것,항상 자신을 재창조할 것 - MIT 미디어랩 -
ㅠ.ㅠ
지금 출장중이라 나중에 공부하기위해 탐색기를 베낀 톰색기를 만들어보겠다는 말이었는데 ㅠ.ㅠ
댓글 달기