SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BachelorsPadTv

    BachelorsPad

    17 Ocak 2012
  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • Submissions101

    Submissions1

    23 ŞUBAT 2007