首頁 >Java >java教程 >java文件操作以及文件過濾器的介紹(附實例)

java文件操作以及文件過濾器的介紹(附實例)

不言
不言原創
2018-09-20 15:08:573685瀏覽

這篇文章帶給大家的內容是關於java文件操作以及文件過濾器的介紹(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

檔案操作 

  java提供了File類別來供我們操作文件,FIle是文件或資料夾的抽象表示,也就是物件表示。總結了幾個常用的方法

  • File(File parenrt,String child)、FIle(String pathname)、File(String parent,String child),三個建構子可以多種方式實作實例化。

  • getAbsolutePath():傳回此檔案或資料夾的絕對路徑

  • getName():傳回此資料夾或檔案的名稱

  • getPath():傳回此資料夾或檔案的表示,也就是建構參數中的參數

  • createNewFIle():建立一個新的檔案

  • mkdir():建立新目錄,注意只能建立一層,

  • mkdirs():建立多層目錄

  • isDirectory():判斷是否為目錄

  • #isFile():判斷是否為檔案

  • list():傳回檔案或目錄的名字的字串陣列

  • listFiles():傳回檔案或目錄的檔案物件陣列

文件過濾器:

  listFiles()函數返回文件的物件列表,而有時候我們只需要其中特定的文件,比如說.txt文件,而其餘的不用返回,雖然可以在返回後再操作該數組,但這樣有點太複雜了,java給我們提供了兩個介面FilenameFilter和FileFilter,將此介面物件傳入到listFiles的參數中,以達到過濾的目的。介面中的accept就是過濾函數,分別對所獲得的每一個檔案呼叫此方法,若傳回true,放入陣列中,反之移除

FilenameFilter:

  FilenameFilter過濾器,我們只能使用檔案或目錄的名字,dir參數是檔案所在的目前對象,並不是檔案的FIle對象,所有我們一般只是使用name參數

public interface FilenameFilter {
   boolean accept(File dir, String name);
}

FileFilter:

  FileFilter過濾器,參數pathname就是檔案的FIle對象,透過它我們可以得到檔案的一切屬性,比如說pathname.getName()就是檔案的名字啦,可以變成間接的FIlenameFilter。功能強大

public interface FileFilter {
    boolean accept(File pathname);
}

實例:

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

/**
 * 自定义的局部内部类来自定义过滤器类,
 */
public class Generics {
    //自定义过滤器类实现FilenameFilter接口
    static class MyFilenameFilter implements FilenameFilter{
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".java");//只获取.java结尾的文件或目录
        }
    }
    //自定义过滤器类实现FileFilter接口
    static class MyFileFilter implements FileFilter{
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().endsWith(".java");//只获取.java结尾的文件或目录
        }
    }
    public static void main(String[] args) {
        File file =new File("D:");
        //方式一:FileFilter过滤器
        File[] files=file.listFiles(new MyFileFilter());
        for (File f:files){
            System.out.println(f.getName());
        }
        //方式二:FilenameFilter过滤器
        File[] files2=file.listFiles(new MyFilenameFilter());
        for (File f:files2){
            System.out.println(f.getName());
        }
        //list()函数只能接受FilenameFilter对象,匿名内部类的形式实现,
        //或者可以理解为为什么既然有FileFilter,而还要FilenameFilter
            //  1.对于listFiles来说,FilenameFilter可以直接操作name,而不需要通过File对象获取
            //  2.对于list来说,它只能是FilenameFilter过滤器,因为得到的是String,已经不是File了
        String[] filenames = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".java");
            }
        });
        for(String str:filenames){
            System.out.println(str);
        }
    }
}

以上是java文件操作以及文件過濾器的介紹(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn