计算目录中的图像

Eri*_*ric 4 java file count detect

我想要计算目录中有多少图像.我有一些来自互联网的代码的副本,可以检测目录中的总文件.

import java.io.*;

public class CountFilesInDirectory {
      public static void main(String[] args) {
            File f = new File("/home/pc3/Documents/ffmpeg_temp/");
            int count = 0;
            for (File file : f.listFiles()) {
                    if (file.isFile()) {
                            count++;
                    }
            }
            System.out.println("Number of files: " + count);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望计算一个特定的文件类型,如jpg/txt.我该怎么办?

Att*_*ila 5

改变这个

if (file.isFile()) { 
  count++; 
} 
Run Code Online (Sandbox Code Playgroud)

if (file.isFile() &&
    (file.getName().endsWith(".txt") || file.getName().endsWith(".jpg"))) { 
  count++; 
} 
Run Code Online (Sandbox Code Playgroud)

这段代码的作用不仅仅是检查表示的实体是否file实际上是一个文件(而不是目录),你还要检查它的名称是否以你要查找的特定扩展名结尾

注意:您可以使用String.toLowerCase()方法在比较之前将名称转换为更准确.

更新(基于注释):对于更多OOP解决方案,您可以实现java.io.FilenameFilter接口并将其实例传递给f.listFiles()- 从而使您能够在程序的另一部分重用该过滤器而无需重复代码.如果使用此方法,则需要将endsWith逻辑移至FilenameFilter实现

  • 虽然技术上正确,但我不同意这个解决方案.我将使用`java.io.FilenameFilter`的实现并将其传递到'File.listFiles(FilenameFilter)`方法,以仅返回与Pattern匹配的文件(或使用`String.endsWith(String)`).这个解决方案有程序代码,而不是OO. (3认同)