Java中File類的注意點(隨記)

 

用戶界面和操作系統使用與系統相關的路徑名字符串 來命名文件和目錄。此類呈現分層路徑名的一個抽象的、與系統無關的視圖。抽象路徑名 有兩個組件:

一個可選的與系統有關的前綴 字符串,比如盤符,"/" 表示 UNIX 中的根目錄,"\\\\" 表示 Microsoft Windows UNC 路徑名。

零個或更多字符串名稱 的序列。

抽象路徑名中的第一個名稱是目錄名,對於 Microsoft Windows UNC 路徑名則是主機名。抽象路徑名中第一個名稱之後的每個名稱表示一個目錄;最後一個名稱既可以表示目錄,也可以表示文件。 抽象路徑名沒有前綴和名稱序列。 

路徑名字符串與抽象路徑名之間的轉換與系統有關。將抽象路徑名轉換爲路徑名字符串時,每個名稱與下一個名稱之間用一個默認分隔符 隔開。默認名稱分隔符由系統屬性 file.separator 定義,可通過此類的公共靜態字段 separator 和 separatorChar 使其可用。將路徑名字符串轉換爲抽象路徑名時,可以使用默認名稱分隔符或者底層系統支持的任何其他名稱分隔符來分隔其中的名稱。

無論是抽象路徑名還是路徑名字符串,都可以是絕對 路徑名或相對 路徑名。絕對路徑名是完整的路徑名,不需要任何其他信息就可以定位它所表示的文件。相反,相對路徑名必須使用取自其他路徑名的信息進行解釋。默認情況下,java.io 包中的類總是根據當前用戶目錄來解析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是 Java 虛擬機的調用目錄。

調用此類的 getParent() 方法可以獲取抽象路徑名的 路徑名,它由路徑名前綴以及路徑名名稱序列中的每個名稱(最後一個除外)組成。對於任何具有絕對抽象路徑名的 File 對象,如果其絕對抽象路徑名以某個目錄的絕對路徑名開頭,那麼該目錄的絕對路徑名是該 File 對象的祖先。例如,抽象路徑名 "/usr" 表示的目錄是路徑名 "/usr/local/bin" 所表示目錄的一個祖先。

下面解釋下file類在使用過程中的一些常用方法:

isDirectory

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

返回:

當且僅當此抽象路徑名錶示的文件存在 是一個目錄時,返回 true;否則返回 false

拋出:

SecurityException如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件進行讀訪問

public String[] list()

返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄。 

如果此抽象路徑名不表示一個目錄,那麼此方法將返回 null。否則返回一個字符串數組,每個數組元素對應目錄中的每個文件或目錄。表示目錄本身及其父目錄的名稱不包括在結果中。每個字符串是一個文件名,而不是一條完整路徑。

不保證所得數組中的相同字符串將以特定順序出現,特別是不保證它們按字母順序出現。

返回:

字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄。如果目錄爲空,那麼數組也將爲空。如果此抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null

public interface FilenameFilter

實現此接口的類實例可用於過濾器文件名。Abstract Window Toolkit 的文件對話框組件使用這些實例過濾 File 類的 list 方法中的目錄清單。

boolean accept(File dir,String name)測試指定文件是否應該包含在某一文件列表中。 

參數:

dir- 被找到的文件所在的目錄。

name- 文件的名稱。

返回:

當且僅當該名稱應該包含在文件列表中時返回 true;否則返回 false

下面舉個例子:列出目錄下指定的文件,代碼如下:

package xixi;

import java.io.File;

import java.io.FilenameFilter;

publicclass PPT1 {

publicstaticvoid main(String[] args) {

     File file =new File("C:\\Users\\xieds\\Desktop\\課件");

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

     G g=new G();

     String[]s=file.list(g);

     file.list(g);

for(String x:s){

 System.out.println(x);

     }

}

}

class G implements FilenameFilter{

publicboolean accept(File dir, String name) {

if(name.endsWith(".ppt")||name.endsWith(".pdf")){//判斷文件後綴是不是.ppt.pdf結尾。

returntrue;

}else{

returnfalse;

}

}

}

運行結果:

true
01_JAVASE_開發概述.ppt
02_JAVASE_語法基礎上.ppt
03_JAVASE_語法基礎下.ppt
04_JAVASE面向對象上.ppt
05_JAVASE面向對象下.ppt
06JAVASE_常用類.ppt
07JAVA?容器.ppt
08JAVA異常.ppt
09JAVA IO.ppt
10JAVA多線程.ppt
11JAVA網絡編程.ppt
12JAVA_GUI.ppt
java_Swing.ppt
java內部類.ppt
Java就業培訓教程_張孝祥.pdf
Java數據結構和算法中文第二版.pdf
swing實例-計算器.ppt
[Java開發實戰經典(名師講壇)].李興華.掃描版.pdf
[代碼大全2中文版(完整清晰版)].pdf
~$03_JAVASE_語法基礎下.ppt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章