关于java:获取文件夹中所有文件的文件名

Getting the filenames of all files in a folder

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Read all files in a folder

我需要创建一个文件夹中所有文件名的列表。

例如,如果我有:

1
2
3
000.jpg
012.jpg
013.jpg

我想把它们存储在一个以[000,012,013]为值的ArrayList中。

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

PS:我在Mac OS X上


你可以这样做:

1
2
3
4
5
6
7
8
9
10
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());
  }
}

是否只获取jpeg文件或所有文件?


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

1
2
3
4
5
6
7
8
9
10
11
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());
    }
}


下面介绍如何查看文档。

首先,你要处理的是IO,所以看看java.io包。

有两个类看起来很有趣:filefilter和filenamefilter。当我单击第一个时,它显示在文件类中有一个listFiles()方法。该方法的文档显示:

Returns an array of abstract pathnames
denoting the files in the directory
denoted by this abstract pathname.

Filejavadoc中向上滚动,我看到了构造函数。我只需要创建一个File实例并调用listFiles()就可以了。进一步滚动,我可以看到一些关于如何在不同操作系统中命名文件的信息。