-- Java SE

Finding Files

Glob Syntax

Hangi kalıpta dosyalar bulmak istenildiğini programa söylemek için öncelikle bir kalıp(pattern) oluşturmak gerekir. bu kalıp aşağıdaki glob syntax ile oluşturulabilir.

  • Süslü parantezler pattern için küme belirtmede kullanılır.

{File,TXT}   = File veya TXT ile eşleşen tek elemanı bulmak için.
{File*,TXT*} = File veya TXT ile eşleşen tüm elemanları bulmak için.

  • Köşeli parantezler karakterler için küme belirtmede kullanılır.(-) işareti, aralık belirtmede kullanılır.

[aeiou]   = Sesli ve küçük harfli karakterler.
[0-9]             = Numeric değerler için
[A-Z]             = Büyük harfler için
[a-z,A-z] = Büyük ve küçük harfler için

Örnekler :

*.html           = .html ile biten tüm stringler.
???              = Üç karakterli stringler.
*[0-9]*          = Numara içeren stringler.
*.{htm,html,pdf} = htm,html veya pdf ile biten stringler
a?*.java         = A ile başlayan,devamında en az bir harf veya numara içeren ve .java ile biten stringler.
{foo*,*[0-9]*}   = foo ile başlayan veya numara içeren stringler.

PathMatcher

Bulmak istediğimiz dosya kalıbı hazırlandıktan sonra sistemdeki dosyaların bu kalıpla eşleşip eşleşmediğini test etmek için PathMatcher interface’i içindeki bir Path argümanı alan ve BOOLEAN değer dönderen matches metodu kullanılabilir. Bulma işlemi bir önceki yazıda anlattığım directory gezmek için kullanılan walkFileTree metodları ile iç içe gerçekleşir.

Aşağıdaki program üç farklı kalıptaki dosyaları belirtilen directory içerisinde arar. Yorum satırlarında gerekli bilgi vardır.

F ile veya TXT ile başlayan dosyalar :
D:\File
D:\File\File2
D:\File\File2\File3
D:\File\File2\File3\File4
D:\File\File2\File3\File5
D:\File\File2\File3\TXT4.txt
D:\File\File2\TXT3.txt
D:\File\TXT1.txt
D:\File\TXT2.txt
Matched: 9
---------------
İsminde 0,1,2,3 bulunduran dosyalar :
D:\File\A__1.txt
D:\File\File2
D:\File\File2\A2
D:\File\File2\A2\A3.txt
D:\File\File2\File3
D:\File\File2\TXT3.txt
D:\File\TXT1.txt
D:\File\TXT2.txt
Matched: 8
---------------
A ile başlayıp devamında en az 1 karakter içeren ve txt ile biten dosyalar: 
D:\File\A__1.txt
D:\File\File2\A2\A3.txt
Matched: 2

 

Yorum bırak

Yorum