문제

Delphi 2010을 사용하는 Windows에서 실제로 모든 파일을 가로지 않고 파일 수를 더럽 히는 방법이 있습니까?

일부 파일 시스템 인덱싱 작업 중에 진행률 표시 줄을 구현하고 싶습니다. 이런 이유로 디렉토리에 몇 개의 파일이 있는지 알아야합니다.

디렉토리에서 파일 수를 얻는 가장 빠른 방법은 무엇입니까?

도움이 되었습니까?

해결책

가장 빠른 방법은 ioutils.pas에 위치한 tdirectory.getfiles 메소드를 사용하는 것입니다. 디렉토리의 (보이는) 파일의 수가 각 사용자마다 다를 수 있으므로 어떻게 든 검색 할 숫자 만있을 가능성이 거의 없습니다.

FindFirst/FindNext 접근법 (위의 메소드로 래핑)은 실제로 파일을 가로 지르지 않으며 테이블에서 항목만을 가로 지르므로 예상보다 빠를 수 있습니다.

다른 팁

Windows 7 또는 Server 2008 R2에서 실행중인 경우 Sysutils에서 FindFirst 및 FindMatchingFile 함수를 추출하고 FindFirstFile 대신 FindFirstFileEx를 사용하도록 전자를 해킹하는 것이 좋습니다. 그런 다음 추가 플래그 매개 변수를 2로 설정할 수 있습니다 (MSDN에서 FIND_FIRST_EX_LARGE_FETCH)이 설정이 조절 된 상태에서 (Win32Majorversion = 6) 및 (Win32minorversion> = 1), 시간.

이 설정은 이러한 OS에서 FindFirst/FindNext 루프에 대해 매우 상당한 속도 증가를 생성합니다. 찾다 FindFirstFileEx MSDN에서 자세한 내용은 최신 문서가 Delphi 도움말이 검색 한 Microsoft 문서에 있지 않기 때문에 자세한 내용은 설명합니다.

tdirectory.getfiles는 결국 FindFirst라고 부르는 것처럼 보이므로 자신의 코드를 단순화하는 것 외에 다른 이점을 구매하지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top