如何在Java中获取目录下所有jpg文件的列表?


File类的**String[] list(FilenameFilter filter)**方法返回一个字符串数组,其中包含当前(File)对象所表示路径中的所有文件和目录的名称。但是,返回的数组包含基于指定过滤器过滤的文件名。**FilenameFilter**是Java中的一个接口,只有一个方法。

accept(File dir, String name)

要根据扩展名获取文件名,请按如下方式实现此接口并将它的对象传递给上面指定的File类的list()方法。

假设我们在D盘目录下有一个名为*ExampleDirectory*的文件夹,其中包含7个文件和2个目录,如下所示:

示例

下面的Java程序分别打印D:\ExampleDirectory路径中文本文件和jpeg文件的名称。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class Sample{
   public static void main(String args[]) throws IOException {
    //Creating a File object for directory
    File directoryPath = new File("D:\ExampleDirectory");
    //Creating filter for jpg files
    FilenameFilter jpgFilefilter = new FilenameFilter(){
         public boolean accept(File dir, String name) {
            String lowercaseName = name.toLowerCase();
            if (lowercaseName.endsWith(".jpg")) {
               return true;
            } else {
               return false;
            }
         }
      };        
      String imageFilesList[] = directoryPath.list(jpgFilefilter);
      System.out.println("List of the jpeg files in the specified directory:");  
      for(String fileName : imageFilesList) {
         System.out.println(fileName);
      }  
   }
}

输出

List of the jpeg files in the specified directory:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

示例

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class Example {
   public static void main(String[] args) throws IOException {
      Stream<Path> path = Files.walk(Paths.get("D:\ExampleDirectory"));
      path = path.filter(var -> var.toString().endsWith(".jpg"));
      path.forEach(System.out::println);
    }
}

输出

List of the jpeg files in the specified directory:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

更新于:2021年2月8日

浏览量:1K+

启动您的职业生涯

完成课程获得认证

开始学习
广告