문제

사용자가 특정 기준에 대해 NTFS의 디렉토리를 검색하고 결과를 표시 할 수있는 웹 페이지를 작성하고 싶습니다.

디렉토리를 인덱싱해야합니까?

디렉토리를 쿼리하는 데 사용할 수있는 .NET 액세스 가능한 Windows 검색 API가 있습니까?

도움이 되었습니까?

해결책

System.io.directoryInfo만으로도 검색을 내장하지 않았습니다.

대부분의 사람들은 각 directoryInfo에서 getDirectories 및 getfiles를 호출하는 재귀 방법을 작성하게됩니다.

다른 팁

이것 이름 (와일드 카드), 크기, 타임 스탬프 및 속성을 기반으로 파일 선택을하는 파일 선택자라는 재사용 가능한 클래스입니다.

사용법은 다음과 같습니다.

   Ionic.FileSelector ff = new Ionic.FileSelector(selectionCriteria);
   var filesToAdd = ff.SelectFiles(directoryOnDisk, recurseDirectories);

선택 - 기준은 다음과 같습니다.

*.txt
name = *.txt
size > 10000
name = *.txt and size > 20000
attributes = H and name = *.doc
name = *.cs~ and mtime < 2009-02-14
mtime < 2009-01-01 and (name = *.cs or name = *.vb)
(name = '* Report.docx'  or  name = *.pptx)

... MTIME이 "마지막 쓰기 시간"을 암시하는 경우, Atime은 "마지막 액세스 시간"을 암시하고 CTime은 "생성 시간"을 암시하며 속성은 System, Hidden, Readonly, Archive 및 ContentIndexed와 같은 NTFS 속성 세트를 나타냅니다. H, R, A, I).

개입 공간이있을 때만 파일 이름 패턴 주위에 단일 따옴표가 필요합니다.

이 파일 선택기 클래스의 소스를 잡고 어디서나 사용할 수 있습니다.

Windows Search API를 사용할 수 있습니다 이 방법, 그러나 나는 그런 식으로 마음에 들지 않습니다.

디렉토리를 직접 색인 할 시간이 있다면 시도하는 것이 좋습니다. Lucene.net, 이것은 Windows 인덱싱 서비스보다 빠릅니다.

어쨌든 가장 짧은 방법은 System.io.directoryInfo.getDirectories를 사용하는 것입니다.

directoryInfo.getFiles는 하위 디렉토리를 통해 재귀를 지원합니다. 과부하 된 방법 중 하나입니다. 그러나 파일 이름으로 만 필터링 할 수 있습니다.

.NET 2.0 이상을 사용하는 경우 (및 vb.net)my.computer.filesystem.getfiles 메소드. 이 방법에는 세 가지 매개 변수가 있습니다.

  • 예배 규칙서
  • SearchType (열거)
  • 와일드 카드

그만큼 SearchType 열거 그 중 하나는 두 가지 가치가 있습니다 SearchAllSubdiRectories. 따라서 일치하는 모든 파일 (이름)의 readonly 문자열 모음을 반환하는 1 메소드.

C#을 사용하는 경우 사용할 수 있습니다. directoryInfo.getFiles 메소드 . directoryInfo.getFiles에는 2 개의 매개 변수 만 있습니다.

  • SearchPattern
  • searchOption

지정하는 경우 AllDirectories 검색의 경우 비슷한 결과를 얻을 수 있습니다.

주요 차이점은 FileSystem.getFiles가 문자열 모음으로 반환하는 반면 DirectoryInfo.getFiles는 FileInfo 객체의 배열을 반환한다는 것입니다.

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