In this section we will be showing instructions on how to delete a file in consideration with the file extension. Consider a scenario when the requirements is for us to delete all files with extension .log under a folder. This is very helpful knowledge especially during design of maintenance architecture in corporate scenario.
Delete files with file extension .log in a folder using FileNameFilter
This is very easy we just have to find a way to list all files with .log extension under a folder. This can be accomplished by method listFiles of File class under java.io package. The listFiles as of JavaSe 7, is accepting a FileNameFileFilter. FilenameFilter is an interface which is used to filter filenames. Since it s an interface we are required to implement method accept(File dir, String name). Method accept returns a boolean which we can put logic in filtering the filename. Please see below for the source code that implements the FilenameFilter class.
package com.javatutorialhq.tutorial;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DeleteFileWithExtension {
/**
* This java sample code shows
* how to delete file with specific extension using FileNameFilter
* Property of javatutorialhq.com
* All Rights Reserved
* Version 1.0
* 07/26/2012
*/
public static void main(String[] args) {
File file = new File("C:\\temp\\files");
//check first if supplied file name is a folder
if(file.isDirectory()){
List listFile = new ArrayList<>();
listFile = Arrays.asList(file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".log");
}
}));
for(File f:listFile){
System.out.println("Deleting " + f.getAbsolutePath());
f.delete();
}
}
else{
//Flagging down that the filename specified is not a directory
System.out.println("file:"+file.getAbsolutePath()+" is not a directory");
}
}
}
Here is a sample output upon running the program
Deleting C:\temp\files\another.log Deleting C:\temp\files\copy.log Deleting C:\temp\files\logger.log Deleting C:\temp\files\test1.log Deleting C:\temp\files\tester.log