【问题标题】:How to read all files in a folder from Java?如何从Java读取文件夹中的所有文件?
【发布时间】:2010-12-23 02:45:17
【问题描述】:

如何通过Java读取文件夹中的所有文件?

【问题讨论】:

  • 我同意,指出要使用的类,以便发帖者熟悉各种方法,否则发帖者不会费心阅读 API 以了解其他可用方法。跨度>
  • 你是指一个文件夹中的所有文件,还是一个文件夹和所有子文件夹中的所有文件?
  • 如果您使用 Java 7 或更新版本,您可以使用Files.walkFileTree,请参阅stackoverflow.com/a/23814217/1115554

标签: java file io directory


【解决方案1】:
public static List<File> files(String dirname) {
    if (dirname == null) {
        return Collections.emptyList();
    }

    File dir = new File(dirname);
    if (!dir.exists()) {
        return Collections.emptyList();
    }

    if (!dir.isDirectory()) {
        return Collections.singletonList(file(dirname));
    }

    return Arrays.stream(Objects.requireNonNull(dir.listFiles()))
        .collect(Collectors.toList());
}

【讨论】:

    【解决方案2】:

    防止 listFiles() 函数出现 Nullpointerexceptions 并递归地从子目录中获取所有文件..

     public void listFilesForFolder(final File folder,List<File> fileList) {
        File[] filesInFolder = folder.listFiles();
        if (filesInFolder != null) {
            for (final File fileEntry : filesInFolder) {
                if (fileEntry.isDirectory()) {
                listFilesForFolder(fileEntry,fileList);
            } else {
                fileList.add(fileEntry);
            }
         }
        }
     }
    
     List<File> fileList = new List<File>();
     final File folder = new File("/home/you/Desktop");
     listFilesForFolder(folder);
    

    【讨论】:

      【解决方案3】:
      import java.io.File;
      
      
      public class Test {
      
      public void test1() {
          System.out.println("TEST 1");
      }
      
      public static void main(String[] args) throws SecurityException, ClassNotFoundException{
      
          File actual = new File("src");
          File list[] = actual.listFiles();
          for(int i=0; i<list.length; i++){
              String substring = list[i].getName().substring(0, list[i].getName().indexOf("."));
              if(list[i].isFile() && list[i].getName().contains(".java")){
                      if(Class.forName(substring).getMethods()[0].getName().contains("main")){
                          System.out.println("CLASS NAME "+Class.forName(substring).getName());
                      }
      
               }
          }
      
      }
      }
      

      只需传递您的文件夹,它就会告诉您有关该方法的主类。

      【讨论】:

        猜你喜欢
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-23
        • 1970-01-01
        相关资源
        最近更新 更多