지금 만들고자 하는게 특정 폴더 내의 수많은 파일을 빠르게 Hash Table화 시키는 것임.
예를 들어 C:\Music 폴더 내에 음악파일(mp3, wav, wma 등등)이 쭉 있다고 치면(물론 가수별 폴더 + 앨범별 폴더도 하위폴더로 존재함)
내 프로그램을 실행시키면 가장 최근에 실행했을 때의 Directory Hash?와 비교해서 파일 추가/변경/삭제를 판단해서 미리 저장해둔 Hash Table을 변경할 계획임..
이러는 이유가 파일 갯수만 수만개가 넘어가서 매번 폴더 전체 순회하고 Hash Table 만들면 시간이 너무 오래 걸림..;;
그래서 생각해낸게 미리 Hash Table에 저장해두고 사용자가 선택한 파일만 열도록 하는건데 그러면 만약 파일이 추가 되거나 변경될 경우엔 그걸 감지할 수가 없음..;;
Directory Hash를 구하는 소스는 실행시켜보면 수만개를 돌리는데 또 시간이 너무 오래 걸려서 못쓸거 같음..
또 구글링 하다 file change notification 쪽도 알게 됬는데 그건 프로그램 실행 도중에 변경된 사항을 Callback?으로 받는거라 목적에서 벗어남.
간단하게 한줄 요약하면 프로그램이 이전에 실행 되었을 때 시점을 기준으로 Directory 내의 파일 변화를 알 수 있는 방법 없을까요?
키워드만 던져주셔도 감사하겠슴다..
불가능하다고봄
진짜 나는 다운로드 폴더에 이미지 무척 많은데 탐색기 등으로 열면 열리는데 시간 너무 오래 걸리더라. 캐시도 안되는 것 같아. 파일시스템에서 지원해주는 것도 아니고. 빨리 불러오는 방법 없나?
onedrive나 google drive같은 데스크톱-웹 간에 파일 동기화해주는 프로그램들은 어떤 방법을 쓸까? 아마 일일이 다 뒤진다고 본다..
됬->됐 (되어 = 돼임) [리듬 맞춤법 봇♬]
갯수->개수 (개수 (個數)[명사] : 한 개씩 낱으로 셀 수 있는 물건의 수효.) [리듬 맞춤법 봇♬]
용량 체크
이힝//용량만 체크하면 Info header가 몇글자 바뀌는 것 처럼 용량변화가 없을 경우는 못잡지 않나여
이힝//근데 그게 일단 최선의 방식은 맞는듯 하네요 웬만한 변화는 거의 다 잡아낼듯
응 그런게 문제라면 용량과 날짜, 헤더부분을 포함하는 적당히 작은 크기의 값에 대한 해쉬 값 정도를 보관하고 있으면 되지 않을까? 쓰레드 여러 개 띄워서 멀티로 처리하면 시간을 더 줄일 수 있을 것 같아.
ㅇㅇ//이미 스레드를 여러개 돌려서 단순 탐색만 시켜봤었지만 원하는 정도의 성능이 나오지 않았습니다....ㅠㅠ