如何使用 Java 显示目录中的所有目录

问题描述

如何显示目录中的所有目录?

解决方案

以下示例显示如何使用 File 类的列表方法制作过滤器来显示目录中包含的所有目录。

import java.io.*;

public class Main { 
   public static void main(String[] args) {
      File dir = new File("F:");
      File[] files = dir.listFiles();
      FileFilter fileFilter = new FileFilter() {
         public boolean accept(File file) {
            return file.isDirectory();
         }
      };
      files = dir.listFiles(fileFilter);
      System.out.println(files.length);
      
      if (files.length == 0) {
         System.out.println("Either dir does not exist or is not a directory");
      } else {
         for (int i = 0; i< files.length; i++) {
            File filename = files[i];
            System.out.println(filename.toString());
         }
      }
   }
}

结果

上述代码示例将产生以下结果。

14
F:\C Drive Data Old HDD
F:\Desktop1
F:\harsh
F:\hharsh final
F:\hhhh
F:\mov
F:\msdownld.tmp
F:\New Folder
F:
avi
F:
avi3
F:\RECYCLER
F:\System Volume Information
F:	emp
F:\work

下面是另一个使用 Java 显示目录中所有目录的示例

import java.io.File;
import java.io.IOException;

public class FileDisplay { 
   public static void main(String[] args) {
      File currentDir = new File(".");
      displayDirectoryContents(currentDir);
   } 
   public static void displayDirectoryContents(File dir) {
      try { 
         File[] files = dir.listFiles();
         for (File file : files) {
            if (file.isDirectory()) {
               System.out.println("directory:" + file.getCanonicalPath());
               displayDirectoryContents(file);
            } else {
               System.out.println("     file:" + file.getCanonicalPath());
            } 
         } 
      } catch (IOException e) {
         e.printStackTrace();
      } 
   } 
}

上述代码示例将产生以下结果。

file:/web/com/1481172458_94270/FileDisplay.java
file:/web/com/1481172458_94270/FileDisplay.class
java_directories.html