📜  基于扩展名查找/删除文件的Java程序

📅  最后修改于: 2022-05-13 01:55:39.678000             🧑  作者: Mango

基于扩展名查找/删除文件的Java程序

我们可以使用FilenameFilter在Java中重写接受(文件目录,字符串名称)方法执行该文件过滤操作。 Filename 接口有一个方法 accept()。它检查给定的文件是否应包含在文件列表中。我们可以通过实现这个方法来检查传递目录中的每个文件。如果文件具有所需的扩展名,则将其包含在内,否则将被丢弃。

句法:

accept(File dir, String name)

现在接下来要处理的是如何将文件包含在具有给定扩展名的列表中,因为有一个File.list()方法接受 FilenameFilter 实例。列表返回一个字符串数组,命名由满足指定过滤器的抽象路径名表示的目录中的文件和目录。所以让我们详细讨论这个函数以获得一个 在处理文件时更好地理解。

list()方法是 File 类的一部分。如果路径名是目录,则该函数返回一个字符串数组,该字符串表示给定抽象路径名中的文件,否则返回 null。该函数是一个重载函数。其中一个函数没有任何参数,另一个函数将 FilenameFilter 对象作为参数,如下所述

函数签名:



public String[] list()
public String[] list(FilenameFilter f)

函数语法:

file.list()
file.list(filter)

参数:该函数是一个重载函数。其中一个函数没有任何参数,另一个函数将 FilenameFilter对象作为参数

返回值:该函数返回一个字符串数组,如果文件对象是一个文件,则返回一个空值。

异常:如果不允许该函数对文件进行写访问,则此方法将引发安全异常。

程序:

我们将按照两个步骤删除基于扩展名的文件:

  1. 实现 FileNameFilter 接口以列出具有给定扩展名的文件。
  2. 遍历这些文件以使用delete()方法删除它们。

例子:

Java
// Java Program to find/delete files based on extensions
 
// Importing input output classes
import java.io.*;
 
// Class 1
// Main class
// To check for a file
class GFG {
 
    // Member variables of this class
 
    // File directory
    private static final String FILE_DIRECTORY
        = "/Users/mayanksolanki/Desktop/";
    // File extension
    private static final String FILE_EXTENSION = ".jpeg";
 
    // Method of this class
    public void deleteFile(String folder, String extension)
    {
 
        // Creating filter with given extension by
        // creating an object of FileExtFilter
        FileExtFilter filter = new FileExtFilter(extension);
 
        // Now, creating an object of FIle  class
        File direction = new File(folder);
 
        // Cresting an array if strings to
        // list out all the file name
        // using the list() with .txt extension
        String[] list = direction.list(filter);
 
        // Iterating over the array of strings
        // using basic length() method
        for (int i = 0; i < list.length; i++) {
            // printing the elements
            System.out.println(list[i]);
        }
 
        // Base condition check when array of strinfg is
        // empty Then simply return
        if (list.length == 0)
            return;
 
        File fileDelete;
 
        // Now looking for the file  in the
        for (String file : list) {
 
            String temp = new StringBuffer(FILE_DIRECTORY)
                              .append(File.separator)
                              .append(file)
                              .toString();
 
            // Storing the file
            fileDelete = new File(temp);
 
            // Checking whether the file is deleted
            boolean isdeleted = fileDelete.delete();
 
            // Print true if file is deleted
            System.out.println("file : " + temp
                               + " is deleted : "
                               + isdeleted);
        }
    }
 
    // Method 2
    // Main driver method
    public static void main(String args[])
    {
 
        // Calling the deleteFile() method over the file
        // FileCheker() method to check existence for the
        // file
 
        // Delete the file with FILE_EXTENSION from
        // FILE_DIRECTORY using the deleteFile() method s
        // created above
        new GFG().deleteFile(FILE_DIRECTORY, FILE_EXTENSION);
    }
}
 
// Class 2
// Helper class
// Which in itself is implementing FilenameFilter Interface
class FileExtFilter implements FilenameFilter {
 
    // Extension
    private String extension;
 
    // Comparator
    public FileExtFilter(String extension)
    {
 
        // This keyword refers to current object itself
        this.extension = extension;
    }
 
    public boolean accept(File directory, String name)
    {
 
        // Returning the file name along with the file
        // extension type
        return (name.endsWith(extension));
    }
}


输出: