File(文件類)
盡管java.io定義的大多數類是實行流式操作的,File類不是。它直接處理文件和文件系統。也就是說,File類沒有指定信息怎樣從文件讀取或向文件存儲;它描述了文件本身的屬性。File對象用來獲取或處理與磁盤文件相關的信息,例如權限,時間,日期和目錄路徑。此外,File還瀏覽子目錄層次結構。很多程序中文件是數據的根源和目標。盡管它們在小應用程序中因為安全原因而受到嚴格限制,文件仍是存儲固定和共享信息的主要資源。Java中的目錄當成File 對待,它具有附加的屬性——一個可以被 list( )方法檢測的文件名列表。
下面的構造函數可以用來生成File 對象:
File(String directoryPath)
File(String directoryPath, String filename)
File(File dirObj, String filename)
這里,directoryPath是文件的路徑名,filename 是文件名,dirObj 一個指定目錄的File 對象。下面的例子創建了三個文件:f1,f2,和f3。第一個File對象是由僅有一個目錄路徑參數的構造函數生成的。第二個對象有兩個參數——路徑和文件名。第三個File對象的參數包括指向f1文件的路徑及文件名。f3和f2指向相同的文件。
File f1 = new File("/");
File f2 = new File("/","autoexec.bat");
File f3 = new File(f1,"autoexec.bat");
注意:Java 能正確處理UNIX和Windows/DOS約定路徑分隔符。如果在Windows版本的Java下用斜線(/),路徑處理依然正確。記住,如果你用Windows/DOS使用反斜線(/)的約定,你需要在字符串內使用它的轉義序列(//)。Java約定是用UNIX和URL風格的斜線來作路徑分隔符。
File 定義了很多獲取File對象標准屬性的方法。例如getName( )返回文件名,getParent( )返回父目錄名,exists( )在文件存在的情況下返回true,反之返回false。然而File類是不對稱的。說它不對稱,意思是雖然存在允許驗證一個簡單文件對象屬性的很多方法,但是沒有相應的函數來改變這些屬性。下面的例子說明了幾個File方法:
// Demonstrate File.
import java.io.File;
class FileDemo {
static void p(String s) {
System.out.println(s);
}
public static void main(String args[]) {
File f1 = new File("/java/COPYRIGHT");
p("File Name: " + f1.getName());
p("Path: " + f1.getPath());
p("Abs Path: " + f1.getAbsolutePath());
p("Parent: " + f1.getParent());
p(f1.exists() ? "exists" : "does not exist");
p(f1.canWrite() ? "is writeable" : "is not writeable");
p(f1.canRead() ? "is readable" : "is not readable");
p("is " + (f1.isDirectory() ? "" : "not" + " a directory"));
p(f1.isFile() ? "is normal file" : "might be a named pipe");
p(f1.isAbsolute() ? "is absolute" : "is not absolute");
p("File last modified: " + f1.lastModified());
p("File size: " + f1.length() + " Bytes");
}
}
運行該程序,你將看到下面的結果:
File Name: COPYRIGHT
Path: /java/COPYRIGHT
Abs Path: /java/COPYRIGHT
Parent: /java
exists
is writeable
is readable
is not a directory
is normal file
is absolute
File last modified: 812465204000
File size: 695 Bytes
大多數File方法是自說明的,但isFile( )和isAbsolute( )不是。isFile( )在被文件調用時返回true,在被目錄調用時返回false。並且,isFile( )被一些專用文件調用時返回false,例如設備驅動程序和命名管道,所以該方法可用來判定文件是否作為文件執行。isAbsolute( )方法在文件擁有絕對路徑時返回true,若是相對路徑則返回false。
File 還包括兩個有用的實用工具方法。第一個是renameTo( ),顯示如下:
(1)boolean renameTo(File newName)
這里,由newName指定的文件名變成了所調用的File 對象的新的名稱。如果更名成功則返回ture,文件不能被重命名(例如,你試圖重命名文件以使它從一個目錄轉到另一個目錄,或者你使用了一個已經存在的文件名),則返回false。
(2)第二個實用工具方法是delete( )
該方法刪除由被調用的File對象的路徑指定的磁盤文件。它的形式如下:
boolean delete( )
同樣可以在目錄為空時用delete( )刪除目錄。如果刪除了文件,delete( )返回true,如果文件不能被刪除則返回false。Java 2 為File 類增添了一些新的方法,你會發現在某些場合這些新增方法很有用。
一些最有趣的方法顯示如下:
方法 描述
void deleteOnExit( ) 在java虛擬機終止時刪除與調用對象相關的文件
boolean isHidden( ) 如果調用的文件是隱藏的,返回true;否則返回 false。
boolean setLastModified(long millisec) 設置由millisec指定的調用文件的時間標志,Millisec是從1970年1月1號開始的標准時間(UTC)的毫秒數
boolean setReadOnly( ) 設置調用文件為只讀
並且,因為File 類現在支持Comparable 接口,compareTo( )方法也被支持。
(轉自):http://blog.csdn.net/shichexixi/article/details/5563605