Java知多少(71)檔案與目錄管理

來源:互聯網
上載者:User

標籤:

目錄是管理檔案的特殊機制,同類檔案儲存在同一個目錄下不僅可以簡化檔案管理,而且還可以提高工作效率。Java 語言在 java.io 包中定義了一個 File 類專門用來管理磁碟檔案和目錄。

每個 File 類對象表示一個磁碟檔案或目錄,其對象屬性中包含了檔案或目錄的相關資訊。通過調用 File 類提供的各種方法,能夠建立、刪除、重名名檔案、判斷檔案的讀寫權限以及是否存在,設定和查詢檔案的最近修改時間等。不同作業系統具有不同的檔案系統組織方式,通過使用 File 類對象,Java 程式可以用與平台無關的、統一的方式來處理檔案和目錄。

建立 File 類的對象

建立 File 類對象需要給出其所對應的檔案名稱或目錄名,File 類的構造方法如表 10-9 所示。

表 10-9 File 類的構造方法
構造方法 功能描述
public File(String path) 指定與 File 對象關聯的檔案或目錄名,path 可以包含路徑及檔案和目錄名
public File(String path, String name) 以 path 為路徑,以 name 為檔案或目錄名建立 File 對象
public File(File dir, String name) 用現有的 File 對象 dir 作為目錄,以 name 作為檔案或目錄名建立 File 對象
public File(UR ui) 使用給定的統一資源定位器來定位檔案


在使用 File 類的構造方法時,需要注意下面幾點:
(1)path 參數可以是絕對路徑,也可以是相對路徑,也可以是磁碟上的某個目錄。
( 2)由於不同作業系統使用的目錄分隔字元不同,可以使用 System 類的一個靜態變數System.dirSep,來實現在不同作業系統下都通用的路徑。如:
    "d:"+System.dirSep+"myjava"+System.dirSep+"file"

擷取屬性和操作

藉助 File 對象,可以擷取檔案和相關目錄的屬性資訊並可以對其進行管理和操作。表 10-10列出了其常用的方法及說明。

表 10-10 File 的常用方法
方法 功能描述
boolean canRead() 如果檔案可讀,返回真,否則返回假
boolean canWrite() 如果檔案可寫,返回真,否則返回假
boolean exists() 判斷檔案或目錄是否存在
boolean createNewFile() 若檔案不存在,則建立指定名字的空檔案,並返回真,若不存在返回假
boolean isFile() 判斷對象是否代表有效檔案
boolean isDirectory() 判斷對象是否代表有效目錄
boolean equals(File f) 比較兩個檔案或目錄是否相同
string getName() 返迴文件名或目錄名的字串
string getPath() 返迴文件或目錄路徑的字串
long length() 返迴文件的位元組數,若 File 對象代表目錄,則返回 0
long lastModified() 返迴文件或目錄最近一次修改的時間
String[] list() 將目錄中所有檔案名稱儲存在字串數組中並返回,若 File 對象不是目錄返回 null
boolean delete() 刪除檔案或目錄,必須是空目錄才能刪除,刪除成功返回真,否則返回假
boolean mkdir() 建立目前的目錄的子目錄,成功返回真,否則返回假
boolean renameTo(File newFile) 將檔案重新命名為指定的檔案名稱


【例 10-11】判斷輸入的絕對路徑是代表一個檔案或一個目錄。若是檔案輸出此檔案的絕對路徑,並判斷此檔案的檔案屬性(是否可讀寫或隱藏);若是目錄則輸出該目錄下所有檔案(不包括隱藏檔案)。

 1 【例 10-11】判斷輸入的絕對路徑是代表一個檔案或一個目錄。若是檔案輸出此檔案的絕對路徑,並判斷此檔案的檔案屬性(是否可讀寫或隱藏);若是目錄則輸出該目錄下所有檔案(不包括隱藏檔案)。 2 //********** ep10_11.java ********** 3 import java.io.*; 4 class ep10_11{ 5     public static void main(String args[]) throws IOException{ 6         String FilePath; 7         InputStreamReader in=new InputStreamReader(System.in); 8         BufferedReader a=new BufferedReader(in); 9         System.out.println("請輸入一個絕對路徑:");10         FilePath=a.readLine();  //將 FilePath 作為輸入值11         File FileName=new File(FilePath);  //獲得此路徑的檔案名稱12         if (FileName.isDirectory()){  //判斷此檔案是否為目錄13             System.out.println((FileName.getName())+"為一個目錄");14             System.out.println("================");15             File FileList[]=FileName.listFiles();  //將目錄下所有檔案存入數組16             for(int i=0;i<FileList.length;i++){17                 if(FileList[i].isHidden()==false){  //判斷是否為隱藏檔案18                     System.out.println(FileList[i].getName());  //輸出非隱藏檔案19                 }20             }21         }22         else{23             System.out.println((FileName.getName())+"為一個檔案");24             System.out.println("================");25             //獲得檔案絕對路徑26             System.out.println("絕對路徑為:"+FileName.getAbsolutePath());27             //判斷此檔案是否可讀取28             System.out.println(FileName.canRead()?"可讀取":"不可讀取");29             //判斷此檔案是否可修改30             System.out.println(FileName.canWrite()?"可修改":"不可修改");31             //判斷此檔案是否為隱藏32             System.out.println(FileName.isHidden()?"為隱藏檔案":"非隱藏檔案");33         }34     }35 }

運行結果 10-11 所示:


圖 10-11  輸入一個檔案路徑後例 10_11 的運行結果  系列文章:Java知多少(上)Java知多少(39)interface介面Java知多少(40)介面和抽象類別的區別Java知多少(41)泛型詳解Java知多少(42)泛型萬用字元和型別參數的範圍Java知多少(43)異常處理基礎Java知多少(44)異常類型Java知多少(45)未被捕獲的異常Java知多少(46)try和catch的使用Java知多少(47)多重catch語句的使用Java知多少(48)try語句的嵌套Java知多少(49)throw:異常的拋出Java知多少(50)Java throws子句Java知多少(51)finallyJava知多少(52)內建異常Java知多少(53)使用Java建立自己的異常子類Java知多少(54)斷言詳解Java知多少(55)線程Java知多少(56)執行緒模式Java知多少(57)主線程Java知多少(58)線程Runnable介面和Thread類詳解Java知多少(59)建立多線程Java知多少(60)isAlive()和join()的使用Java知多少(61)線程優先順序Java知多少(62)線程同步Java知多少(63)線程間通訊Java知多少(64)線程死結Java知多少(65)線程的掛起、恢複和終止Java知多少(66)輸入輸出(IO)和流的概述Java知多少(67)面向字元的輸入資料流Java知多少(68)面向字元的輸出資料流Java知多少(69)面向位元組的輸入輸出資料流Java知多少(70)面向位元組流的應用

Java知多少(71)檔案與目錄管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.