這篇文章帶給大家的內容是關於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過濾器,我們只能使用檔案或目錄的名字,dir參數是檔案所在的目前對象,並不是檔案的FIle對象,所有我們一般只是使用name參數
public interface FilenameFilter { boolean accept(File dir, String name); }
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中文網其他相關文章!