Java中的File類

1.File類的靜態(tài)成員變量:

1.static String pathSeparator? ? ? ? ? ?與系統(tǒng)有關的路徑分隔符,為了方便,它被表示為一個字符串。?

2.static char pathSeparatorChar? ? ?與系統(tǒng)有關的路徑分隔符。?

3.static String separator? ? ? ? ? ? ? ? ? 與系統(tǒng)有關的默認名稱分隔符,為了方便,它被表示為一個字符串。?

4.static char separatorChar? ? ? ? ? ? 與系統(tǒng)有關的默認名稱分隔符。


import java.io.File;publicclass FileDemo {

? ? publicstaticvoid main(String[] args) {


? ? ? ? String s1 = File.pathSeparator;

? ? ? ? System.out.println(s1);//打印結果為? ;? 在linux中是:


? ? ? ? String s2 =File.separator;? ? ? ? System.out.println(s2);//打印結果為? \? 如果是Linux系統(tǒng)則為 /? ? }}

2.File類的構造方法:


在同一個案例中演示這三個構造方法:

import java.io.File;publicclass FileDemo {

? ? publicstaticvoid main(String[] args) {


? ? ? ? String pathName = "e:\\java_code\\day22e\\hello.java";

? ? ? ? File f1 =newFile(pathName);//將Test22文件封裝成File對象。注意;有可以封裝不存在文件或者文件夾,變成對象。? ? ? ? System.out.println(f1);


? ? ? ? File f2 =newFile("e:\\java_code\\day22e","hello.java");

? ? ? ? System.out.println(f2);


? ? ? ? //將parent封裝成file對象。File dir =newFile("e:\\java_code\\day22e");

? ? ? ? File f3 =newFile(dir,"hello.java");

? ? ? ? System.out.println(f3);

? ? }

}? //輸出的都是e:\\java_code\\day22e\\hello.java

3.java API中介紹的方法:(常用的標上了顏色)

boolean canExecute()測試應用程序是否可以執(zhí)行此抽象路徑名表示的文件。

boolean canRead()測試應用程序是否可以讀取此抽象路徑名表示的文件。

boolean canWrite()測試應用程序是否可以修改此抽象路徑名表示的文件。

int compareTo(File pathname)按字母順序比較兩個抽象路徑名。

boolean createNewFile()當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創(chuàng)建一個新的空文件。

static File createTempFile(String prefix, String suffix)在默認臨時文件目錄中創(chuàng)建一個空文件,使用給定前綴和后綴生成其名稱。

static File createTempFile(String prefix, String suffix, File directory)在指定目錄中創(chuàng)建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱。

boolean delete()刪除此抽象路徑名表示的文件或目錄。//注意:這個刪除,不走回收站,直接刪除,所以要小心使用。

void deleteOnExit()在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。

boolean equals(Object obj)測試此抽象路徑名與給定對象是否相等。

boolean exists()測試此抽象路徑名表示的文件或目錄是否存在。

File getAbsoluteFile()返回此抽象路徑名的絕對路徑名形式。

String getAbsolutePath()返回此抽象路徑名的絕對路徑名字符串。

File getCanonicalFile()返回此抽象路徑名的規(guī)范形式。

String getCanonicalPath()返回此抽象路徑名的規(guī)范路徑名字符串。

long getFreeSpace()返回此抽象路徑名指定的分區(qū)中未分配的字節(jié)數。

String getName()返回由此抽象路徑名表示的文件或目錄的名稱。

String getParent()返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。

File getParentFile()返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。

String getPath()將此抽象路徑名轉換為一個路徑名字符串。

long getTotalSpace()返回此抽象路徑名指定的分區(qū)大小。

long getUsableSpace()返回此抽象路徑名指定的分區(qū)上可用于此虛擬機的字節(jié)數。

int hashCode()計算此抽象路徑名的哈希碼。

boolean isAbsolute()測試此抽象路徑名是否為絕對路徑名。

boolean isDirectory()測試此抽象路徑名表示的文件是否是一個目錄。

boolean isFile()測試此抽象路徑名表示的文件是否是一個標準文件。

boolean isHidden()測試此抽象路徑名指定的文件是否是一個隱藏文件。

long lastModified()返回此抽象路徑名表示的文件最后一次被修改的時間。

long length()返回由此抽象路徑名表示的文件的長度。字節(jié)數

String[] list()返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。//遍歷目錄返回的只有名字

String[] list(FilenameFilter filter)返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

File[] listFiles()返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。//返回路徑全名? 推薦

File[] listFiles(FileFilter filter)返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

File[] listFiles(FilenameFilter filter)返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

static File[] listRoots()列出可用的文件系統(tǒng)根。

boolean mkdir()創(chuàng)建此抽象路徑名指定的目錄。調用該方法時,F(xiàn)ile對象必須對應一個路徑,而不是文件//只能創(chuàng)建一個目錄

boolean mkdirs()創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。//即可創(chuàng)建一個目錄,也可創(chuàng)建多及目錄,推薦

boolean renameTo(File dest)重新命名此抽象路徑名表示的文件。

boolean setExecutable(boolean executable)設置此抽象路徑名所有者執(zhí)行權限的一個便捷方法。

boolean setExecutable(boolean executable, boolean ownerOnly)設置此抽象路徑名的所有者或所有用戶的執(zhí)行權限。

boolean setLastModified(long time)設置此抽象路徑名指定的文件或目錄的最后一次修改時間。

boolean setReadable(boolean readable)設置此抽象路徑名所有者讀權限的一個便捷方法。

boolean setReadable(boolean readable, boolean ownerOnly)設置此抽象路徑名的所有者或所有用戶的讀權限。

boolean setReadOnly()標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操作。

boolean setWritable(boolean writable)設置此抽象路徑名所有者寫權限的一個便捷方法。

boolean setWritable(boolean writable, boolean ownerOnly)設置此抽象路徑名的所有者或所有用戶的寫權限。

String toString()返回此抽象路徑名的路徑名字符串。

URI toURI()構造一個表示此抽象路徑名的 file: URI。

URL toURL()已過時。 此方法不會自動轉義 URL 中的非法字符。建議新的代碼使用以下方式將抽象路徑名轉換為 URL:首先通過 toURI 方法將其轉換為 URI,然后通過 URI.toURL 方法將 URI 裝換為 URL。

下面介紹幾個常用的方法:

import java.io.File;publicclass FileDemo {

? ? publicstaticvoid main(String[] args) {


? ? ? ? ? ? ? ? //創(chuàng)建文件對象File file =newFile("Test22.java");//創(chuàng)建文件對象,將其封裝成file類對象,就可以調用file類的方法了? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? String absPath1 = file.getAbsolutePath();//獲取文件的絕對路徑,即全路徑 返回的是String對象File absPath2 = file.getAbsoluteFile();//獲取文件的絕對路徑,即全路徑 返回的是File對象? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? String path = file.getPath();//File中封裝的路徑是什么獲取到的就是什么。? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? String filename = file.getName();//獲取文件名稱longsize = file.length();//獲取文件大小? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? System.out.println("absPath1="+absPath1);

? ? ? ? ? ? ? ? System.out.println("absPath2="+absPath2);

? ? ? ? ? ? ? ? System.out.println("path="+path);

? ? ? ? ? ? ? ? System.out.println("filename="+filename);

? ? ? ? ? ? ? ? System.out.println("size="+size);

? ? }

}

import java.io.File;import java.io.IOException;publicclass FileDemo {

? ? publicstaticvoidmain(String[] args)throws IOException {? ?


? ? ? ? File file =newFile("d:\\file.java");

? ? ? ? booleanb = file.createNewFile();

? ? ? ? System.out.println(b);//輸出為true,說明我的D盤下沒有file.java文件 ,他已經自動幫我創(chuàng)建了一個如下圖


? ? }

}

listFiles()方法介紹

publicclass FileMethodDemo3 {

? ? publicstaticvoid main(String[] args) {

? ? ? ? File dir =newFile("e:\\java_code");

? ? ? ? //獲取的是目錄下的當前的文件以及文件夾的名稱。String[] names = dir.list();

? ? ? ? for(String name : names){

? ? ? ? ? ? System.out.println(name);

? ? ? ? }

? ? ? ? //獲取目錄下當前文件以及文件對象,只要拿到了文件對象,那么就可以獲取其中想要的信息File[] files = dir.listFiles();

? ? ? ? for(File file : files){

? ? ? ? ? ? System.out.println(file);

? ? ? ? }

? ? }

}

注意:在獲取指定目錄下的文件或者文件夾時必須滿足下面兩個條件

1,指定的目錄必須是存在的,

2,指定的必須是目錄。否則容易引發(fā)返回數組為null,出現(xiàn)NullPointerException

4.文件過濾器

l? 測試類

publicclass FileDemo2 {

? ? publicstaticvoid main(String[] args) {

? ? ? ? //獲取擴展名為.java所有文件

? ? ? ? //創(chuàng)建File對象File file =newFile("E:\\code\\day11_code");

? ? ? ? //獲取指定擴展名的文件,由于要對所有文件進行擴展名篩選,因此調用方法需要傳遞過濾器File[] files = file.listFiles(new MyFileFilter());

? ? ? ? //遍歷獲取到的所有符合條件的文件for (File f : files) {

? ? ? ? ? ? System.out.println(f);

? ? ? ? }

? ? }

}

l? 自定類繼承FilenameFilter過濾器接口

//定義類實現(xiàn)文件名稱FilenameFilter過濾器classMyFileFilterimplements FilenameFilter{

? ? publicboolean accept(File dir, String name) {

? ? ? ? returnname.endsWith(".java");

? ? }

}

在查閱API時,我們發(fā)現(xiàn),在listFiles(FileFilter filter) 也可以接受一個FileFilter過濾器,它和我們講的FilenameFilter有啥區(qū)別呢?

FilenameFilter過濾器中的accept方法接受兩個參數,一個當前文件或文件夾所在的路徑,一個是當前文件或文件夾對象的名稱。

FileFilter 過濾器中的accept方法接受一個參數,這個參數就當前文件或文件夾對象

當我們需要過濾文件名稱時就可以使用FilenameFilter這個過濾器,當我們想對當前文件或文件夾進行過濾,就可以使用FileFilter ,比如需要當前目錄下的所有文件夾,就可以使用FileFilter 過濾器。

l? 測試類

publicclass FileDemo2 {

? ? publicstaticvoid main(String[] args) {

? ? ? ? //獲取擴展名為.java所有文件

? ? ? ? //創(chuàng)建File對象File file =newFile("E:\\code\\day11_code");

? ? ? ? //獲取指定目錄下的文件夾File[] files = file.listFiles(new FileFileterByDir());

? ? ? ? //遍歷獲取到的所有符合條件的文件for (File f : files) {

? ? ? ? ? ? System.out.println(f);

? ? ? ? }

? ? }

}

//自定義類繼承FileFilter過濾器接口

//

文件過濾器classFileFileterByDirimplements FileFilter{

? ? publicboolean accept(File pathname) {

? ? ? ? return pathname.isDirectory();

? ? }歡迎工作一到五年的Java工程師朋友們加入Java群:?891219277

群內提供免費的Java架構學習資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容