Özyinelemeli olarak Java ile bir dizindeki tüm dosyaları listeler
Bir dizindeki tüm dosyaların özyinelemeli olarak adını yazdıran bu işlevi var. Sorun benim kod her yineleme ile uzak ağ aygıtı erişmek için var çünkü çok yavaş.
Planım ilk dizindeki tüm dosyaları özyinelemeli olarak yüklemek ve daha sonra tüm dosyaları filtrelemek için düzenli ifade ile tüm dosyaları kontrol edip sonra istemiyorum. Herkes daha iyi bir önerisi olan var mı?
public static printFnames(String sDir){
File[] faFiles = new File(sDir).listFiles();
for(File file: faFiles){
if(file.getName().matches("^(.*?)")){
System.out.println(file.getAbsolutePath());
}
if(file.isDirectory()){
printFnames(file.getAbsolutePath());
}
}
}
Bu sadece bir test daha sonra gitmiyorum kullanmak için kod gibi bu, yerine gidiyorum ekleme yolu ve değiştirilme tarihi her hangi dosya ile eşleşen bir düzenli ifade için gelişmiş bir dizi.
CEVAP
Bu gerçek üretim kodu olduğunu varsayarsak yazacaksın, sonra da zaten - Apache Commons IO, FileUtils.listFiles()
özellikle çözüldüğünü ... ... bu tür bir şey için çözüm kullanmanızı öneririm. İç içe geçmiş dizinler, filtreleri (adına göre, değişiklik zamanı, vb.) yönetir.
Eğer düzenli ifade için örneğin,:
Collection files = FileUtils.listFiles(
dir,
new RegexFileFilter("^(.*?)"),
DirectoryFileFilter.DIRECTORY
);
Bu ardışık dosyalar için ^(.*?)
düzenli ifade eşleşen bir koleksiyon gibi sonuçlar dönen arar.
Bu kendi kodunuzu çalışırken daha hızlı olacağını belirterek, aynı şeyi yapıyor değer - Java dosya sistemi trol biraz yavaş. Fark, Apache Commons sürümü herhangi bir hata olacaktır.
LİNUX dizinleri Özyinelemeli olarak se...
Nasıl yinelemeli olarak bulmak ve alt ...
Java dizinleri özyinelemeli olarak sil...
Özyinelemeli olarak bir Linux dizinind...
Liste yolu geçerli dizin göre Linux CL...