2009-03-07 14 views
1

Kullanıcıların belirli ölçütler için NTFS'de bir dizini arayabilecekleri ve sonuçları görüntüleyebilecekleri bir web sayfası yazmak istiyorum.NTFS dizinini arama .NET

Dizinin dizine eklenmesi gerekiyor mu?

Dizini sorgulamak için kullanabileceğim bir .NET erişilebilir pencere arama API'si var mı?

cevap

3

Tek yapmanız gereken System.IO.DirectoryInfo'dur ve aramada bile bulunmamıştır.

Çoğu kişi, her DirectoryInfo'da getDirectories ve getFiles öğesini çağıran bir özyinelemeli yöntem yazıyor.

+0

Evet, elbette ... * iç çek * –

2

Windows arama API'sini this way kullanabilirsiniz, ancak ben gerçekten bu şekilde sevmiyorum.

Dizini kendiniz dizine eklemek için zamanınız varsa, Windows indeksleme hizmetinden daha hızlı olan Lucene.net'u denemenizi öneririz.

Neyse, en kısa yol System.IO.DirectoryInfo.GetDirectories kullanmaktır.

1

DirectoryInfo.GetFiles, altdizinler arasında tekrarlamayı destekler. Aşırı yüklü yöntemlerden biri. Sadece dosya adına göre filtrelemenize izin verir.

1

.NET 2.0 veya daha büyük (ve VB.Net) kullanıyorsanız, My.Computer.FileSystem.GetFiles Method'u kullanabilirsiniz.

  • dizin
  • SearchType (numaralandırma)
  • joker karakterler

SearchType enumerationSearchAllSubDirectories bunlardan biri iki değerlerine sahiptir: Bu yöntem, üç parametre vardır. Yani, eşleşen tüm dosya (adları) bir ReadOnly String Koleksiyonu döndüren 1 yöntem.

C# kullanıyorsanız, DirectoryInfo.GetFiles Method'u kullanabilirsiniz. Eğer AllDirectories benzer bir sonuç almak istiyorum SearchOption için belirtirseniz

  • SearchPattern
  • SearchOption

: DirectoryInfo.GetFiles ile sadece 2 parametre vardır.

DirectoryInfo.GetFiles bir dizi FileInfo Objects döndürürken, FileSystem.GetFiles Dizeleri Toplama olarak döndürdüğü önemli fark.
3

This, ad (joker karakterlerle), boyut, zaman damgası ve özniteliklere göre dosya seçimi yapan FileSelector adlı yeniden kullanılabilir bir sınıftır.

Kullanımı şu şekildedir:

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

selectionCriteria bu şekildedir: mtime "son yazma zamanı" ima

*.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) 

..., atime "son erişim zamanını" ima, ctime "oluşturma zamanı" anlamına gelir ve öznitelikler System, Hidden, Readonly, Archive ve ContentIndexed (S, H, R, A, I) gibi NTFS özniteliği kümesini belirtir.

Tek tırnak işaretleri, yalnızca araya giren boşluk olduğunda dosya adı düzenleri etrafında gereklidir.

Bu dosya selektör sınıfının kaynağını alabilir ve her yerde kullanabilirsiniz.