I am selecting files in java using the following code:
File folder = new File("path to folder");
File[] listOfFiles = folder.listFiles();
Now what to do if I want to select only image files?
I am selecting files in java using the following code:
File folder = new File("path to folder");
File[] listOfFiles = folder.listFiles();
Now what to do if I want to select only image files?
Use one of the versions of File.listFiles()
that accepts a FileFilter
or FilenameFilter
to define the matching criteria.
For example:
File[] files = folder.listFiles(
new FilenameFilter()
{
public boolean accept(final File a_directory,
final String a_name)
{
return a_name.endsWith(".jpg");
// Or could use a regular expression:
//
// return a_name.toLowerCase().matches(".*\\.(gif|jpg|png)$");
//
};
});
You can use File.listFiles() with a FilenameFilter using ImageIO.getReaderFileSuffixes
File[] files = dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
List<String> images = Arrays.asList(ImageIO.getReaderFileSuffixes());
String extension = "";
int i = name.lastIndexOf('.');
if (i > 0) {
extension = name.substring(i+1);
}
return images.contains(extension.toLowerCase());
}
});
May this code help you
String imageExtension[] = new String[]{
"jpg", "png", "bmp" // add more
};
File direcory = new File("path");
File[] listFiles = direcory.listFiles();
ArrayList<File> imageFileList = new ArrayList();
for(File aFile : listFiles ) {
// use FilenameUtils.getExtension from Apache Commons IO
String extension = FilenameUtils.getExtension(aFile.getAbsolutePath());
for(String ext: imageExtension) {
if(extension.equals(ext)) {
imageFileList.add(aFile);
break;
}
}
}