【问题标题】:How to get contents of a folder and put into an ArrayList如何获取文件夹的内容并放入 ArrayList
【发布时间】:2011-09-04 19:56:33
【问题描述】:

我想用

File f = new File("C:\\");

用文件夹的内容创建一个 ArrayList。

我不太擅长缓冲阅读器,所以请告诉我这是否更好。

这是我目前的代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;


public class buffered_read {
public static void main(String[] args) {
    File f = new File("C:\\");
    int x = 0;
    boolean b = true;
    File list[];
    while(b = true){

    }
}
}

谢谢, 顺从的

【问题讨论】:

标签: java file


【解决方案1】:

最简单的方法是:

File f = new File("C:\\");
ArrayList<File> files = new ArrayList<File>(Arrays.asList(f.listFiles()));

如果你想要的是一个名字列表:

File f = new File("C:\\");
ArrayList<String> names = new ArrayList<String>(Arrays.asList(f.list()));

【讨论】:

【解决方案2】:

你有read the API documentation for java.io.File吗?

File f = new File("C:\\");
File[] list = f.listFiles();

【讨论】:

  • 为你重新振作。很好的答案。
【解决方案3】:

File-class 提供了一个listFiles()-method,它返回一个包含当前文件夹中所有文件的File-array。

要制作它们的 ArrayList,您可以使用Arrays-class,它是asList()-method。见here

如果您只需要文件名或路径作为字符串,还有一个 list()-method 返回一个字符串数组。要将数组转换为 ArrayList,请按照链接问题中说明的步骤操作。

【讨论】:

    【解决方案4】:

    流快速且非常易于阅读:

    final Path rootPath = Paths.get("/tmp");
    
    // All entries Path objects
    ArrayList<Path> all = Files
            .list(rootPath)
            .collect(Collectors.toCollection(ArrayList::new));
    
    // Only regular files at Path objects
    ArrayList<Path> regularFilePaths = Files
            .list(rootPath)
            .filter(Files::isRegularFile)
            .collect(Collectors.toCollection(ArrayList::new));
    
    // Only regular files as String paths
    ArrayList<String> regularPathsAsString = Files
            .list(rootPath)
            .filter(Files::isRegularFile)
            .map(Path::toString)
            .collect(Collectors.toCollection(ArrayList::new));
    

    【讨论】:

      【解决方案5】:

      如果您想递归检索所有文件,您可以执行以下操作

      public class FileLister {
      
          static List<String> fileList = new ArrayList<String>();
      
          public static void main(String[] args) {
              File file = new File("C:\\tmp");
              listDirectory(file);
              System.out.println(fileList);
          }
      
          public static void listDirectory(File file) {
              if(file.isDirectory()) {
                  File[] files = file.listFiles();
                  for(File currFile : files) {
                      listDirectory(currFile);
                  }
              }
              else {
                  fileList.add(file.getPath());
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多