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

例如,如果我有:

000.jpg
012.jpg
013.jpg

我想把它们存储在一个数组列表中,值为[000,012,013]。

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

PS:我用的是Mac OS X


当前回答

创建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());
    }
}

其他回答

你可以这样做:

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文件还是所有文件?

下面是如何查看文档。

首先,您正在处理IO,因此请查看java。io包。

有两个类看起来很有趣:FileFilter和FileNameFilter。当我点击第一个时,它显示File类中有一个listFiles()方法。这个方法的文档说:

返回一个抽象路径名数组 表示目录中的文件 由这个抽象路径名表示。

在File JavaDoc中向上滚动,我看到了构造函数。这就是我真正需要能够创建一个File实例并在其上调用listFiles()。继续滚动,我可以看到一些关于在不同操作系统中如何命名文件的信息。

创建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());
    }
}