9 EKİM 2008, PERŞEMBE
Nasıl Java klasörü taramak için?
Nasıl bir özyinelemeli klasör içindeki tüm dosyaların listesini almak Java miyim?
CEVAP
10 EKİM 2008, Cuma
Ağaç temsil etmek istiyorum nasıl emin değil misiniz? Neyse işte, tüm alt özyineleme kullanarak tarayan bir örnek. Dosya ve dizinleri aynı tedavi edilir. File.listFiles() olmayan dizinler için null döndürür unutmayın.
public static void main(String[] args) {
Collection<File> all = new ArrayList<File>();
addTree(new File("."), all);
System.out.println(all);
}
static void addTree(File file, Collection<File> all) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
all.add(child);
addTree(child, all);
}
}
}
Java 7 iyileştirmeler bir çift sunmaktadır. Örneğin, DirectoryStream bir sonuç sağlar - arayan artık tüm G/Ç işlemleri için beklemek tamamlamak için harekete geçmeden önce. Bu GUI güncellemeleri, erken iptal, vb artan sağlar.
static void addTree(Path directory, Collection<Path> all)
throws IOException {
try (DirectoryStream<Path> ds = Files.newDirectoryStream(directory)) {
for (Path child : ds) {
all.add(child);
if (Files.isDirectory(child)) {
addTree(child, all);
}
}
}
}
Korkunç null dönüş değeri IOException tarafından değiştirildiğini unutmayın.
Java 7 de tree walker sunar:
static void addTree(Path directory, final Collection<Path> all)
throws IOException {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
all.add(file);
return FileVisitResult.CONTINUE;
}
});
}
Bunu Paylaş:
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl bir dosyanın içeriğini bir Java ...
Nasıl her döngü için Java çalışır?...
Nasıl Java n ondalık sayıya yuvarlamak...
Nasıl Java genel bir dizi oluşturmak i...