ChatGPT解决这个技术问题 Extra ChatGPT

获取文件夹中所有文件的文件名[重复]

这个问题在这里已经有了答案:How to read all files in a folder from Java? (33 个回答) 2 年前关闭。

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

例如,如果我有:

000.jpg
012.jpg
013.jpg

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

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

PS:我在 Mac OS X 上


A
Andrei Suvorkov

你可以这样做:

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


是的,没有,但处理扩展取决于存在的扩展,因为 cos 文件也可能没有扩展。
顺便说一句,如果你想要当前文件夹,你可以使用 File folder = new File ("."); ...而不是相同的。示例 new File("./"+your_file);
@RoflcoptrException 一个疑问。这个 listofFiles[i] 是指向文件夹中的第一个文件(最后创建)还是最后一个文件(第一个创建)?
如何获取指定扩展名来获取 .jpg 文件?
如果您只想过滤掉 .JPG 文件并将结果排序在最旧的文件中,您可以像这样使用它:File dir = new File("/your/path"); FileFilter fileFilter = new WildcardFileFilter("*.JPG", IOCase.INSENSITIVE); // For taking both .JPG and .jpg files (useful in *nix env) File[] fileList = dir.listFiles(fileFilter); if (fileList.length > 0) { /** The oldest file comes first **/ Arrays.sort(fileList, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR); } //filesList now contains all the JPG/jpg files in sorted order
E
Eric Leschinski

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

您实际上应该调用 listFiles() ;)
@Progman 可能会有所帮助。 :)
您可以在 listFiles 上放置一个过滤器,以便仅返回具有特定扩展名 File[] files = new File("/path/to/the/directory").listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".xml"); } }); 的文件
File[] files = new File(fullPath).listFiles(); List 名称 = Arrays.asList(files).parallelStream().map(file -> file.getName()).collect(Collectors.toList());
您可以使用 lambda 表达式 (Java 8+) 过滤文件:File[] files = new File("path/to/dir").listFiles((dir, name) -> name.endsWith(".xml"));
M
Muhd

以下是查看 documentation 的方法。

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

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

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

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