Count images in a directory

count, detect, file, java

Solution

Change this

if (file.isFile()) { 
  count++; 
} 

to

if (file.isFile() &&
    (file.getName().endsWith(".txt") || file.getName().endsWith(".jpg"))) { 
  count++; 
} 

What this code does is instead of just checking whether the entity denoted by `file` is actually a file (as opposed to a directory), you are also checking if its name ends with the particular extentions you are looking for

Note: you could use the String.toLowerCase() method to convert the name before comparison to be more accurate.

Update (based on comments): for a more OOP solution, you could implement the `java.io.FilenameFilter` interface and pass an instance of that to `f.listFiles()` -- thus enabling you to reuse that filter in another part of the program without much code repetition. If you use this approach, you need to move the `endsWith` logic to the `FilenameFilter` implementation

Problem

I want to count how many image are in a directory. I have a copy of some code from internet which can detect the total file inside a directory. ``` 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); } } ``` I wish to count a specific file type like jpg/txt. What should I do?

Original source

Related problems