获取文件夹中所有文件的文件名

use*_*406 389 java directory filenames file

可能重复:
读取文件夹中的所有文件

我需要创建一个列表,其中包含文件夹中所有文件的名称.

例如,如果我有:

000.jpg
012.jpg
013.jpg
Run Code Online (Sandbox Code Playgroud)

我想将它们存储为ArrayListwith [000,012,013]值.

在Java中最好的方法是什么?

PS:我在Mac OS X上

Rof*_*ion 734

你可以这样做:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    System.out.println("File " + listOfFiles[i].getName());
  } else if (listOfFiles[i].isDirectory()) {
    System.out.println("Directory " + listOfFiles[i].getName());
  }
}
Run Code Online (Sandbox Code Playgroud)

你想只获得JPEG文件或所有文件吗?

  • 如果你想过滤掉.JPG文件并首先在最旧的文件中对结果进行排序,你可以像这样使用它:```File dir = new File("/ your/path"); FileFilter fileFilter = new WildcardFileFilter("*.JPG",IOCase.INSENSITIVE); //同时获取.JPG和.jpg文件(在*nix env中有用)File [] fileList = dir.listFiles(fileFilter); if(fileList.length> 0){/**最旧的文件首先出现**/Arrays.sort(fileList,LastModifiedFileComparator.LASTMODIFIED_COMPARATOR); } // filesList现在包含排序顺序```的所有JPG/jpg文件 (7认同)
  • 顺便说一句,如果你想要当前文件夹你可以使用`File folder = new File(".");`...比相同.例如`new File("./"+ your_file);` (6认同)
  • 如何获取指定扩展名来获取.jpg文件? (5认同)
  • 是的,但是处理扩展依赖于扩展目前的cos文件可能没有扩展. (3认同)
  • @RoflcoptrException有一个疑问.这个listofFiles [i]是指向文件夹中的第一个文件(最后创建的)还是最后一个文件(首次创建)? (2认同)
  • 只是一个建议,您还可以使用增强的 for 循环,如下所示:`for (File file : listOfFiles)`。然后,您只需在每次迭代中引用“file”,而不是“listOfFiles[i]”。 (2认同)

Sea*_*ung 130

创建一个File对象,将目录路径传递给构造函数.使用该listFiles()方法检索File目录中每个文件的对象数组,然后调用该getName()方法以获取文件名.

List<String> results = new ArrayList<String>();


File[] files = new File("/path/to/the/directory").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null. 

for (File file : files) {
    if (file.isFile()) {
        results.add(file.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以在listFiles上放置一个过滤器,以便只返回具有特定扩展名的文件`File [] files = new File("/ path/to/the/directory").listFiles(new FilenameFilter(){@Override public boolean accept (File dir,String name){return name.endsWith(".xml");}}); ` (12认同)
  • File[] files = new File(fullPath).listFiles(); List&lt;String&gt; names = Arrays.asList(files).parallelStream().map(file -&gt; file.getName()).collect(Collectors.toList()); (3认同)
  • 您可以使用* lambda *表达式(Java 8+)来过滤文件:`File [] files = new File(“ path / to / dir”)。listFiles((dir,name)-&gt; name.endsWith(“。xml” ));` (2认同)

Ano*_*non 66

以下是如何查看文档.

首先,你正在处理IO,所以请查看java.io .

有两个看起来很有趣的类:FileFilterFileNameFilter.当我点击第一个时,它向我展示listFiles()File类中有一个方法.该方法的文档说:

返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件.

FileJavaDoc中向上滚动,我看到了构造函数.而这正是我需要能够创建一个File实例并调用listFiles()它的全部内容.滚动更进一步,我可以看到有关如何在不同操作系统中命名文件的一些信息.

  • 给一个人一条鱼,然后喂它们一天;教一个人钓鱼,你一辈子喂它们。 (3认同)