1. 程式人生 > >File類與序列化

File類與序列化

als 名稱 測試 bject nal ner buffer 文件和目錄 長度

一、File類方法

1.與文件、目錄名相關方法

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

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

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

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

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

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

2.與目錄訪問相關方法

boolean mkdir() 創建此抽象路徑名指定的目錄。
boolean mkdirs() 創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。

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

3.與文件、目錄常規信息相關方法

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

boolean delete() 刪除此抽象路徑名表示的文件或目錄。

4.與文件、目錄檢測相關方法

boolean equals(Object obj) 測試此抽象路徑名與給定對象是否相等。
boolean exists() 測試此抽象路徑名表示的文件或目錄是否存在。
boolean isAbsolute() 測試此抽象路徑名是否為絕對路徑名。
boolean isDirectory() 測試此抽象路徑名表示的文件是否是一個目錄。
boolean isFile() 測試此抽象路徑名表示的文件是否是一個標準文件。
boolean isHidden() 測試此抽象路徑名指定的文件是否是一個隱藏文件。

二、序列化

IO流:包裝字節流就是個標準的序列化案例。

//序列化
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        ObjectOutputStream oos = null;
        
        try {
            fos = new FileOutputStream(args[0]);
            bos = new BufferedOutputStream(fos);
            oos = new ObjectOutputStream(bos);
            
            Integer num = 1;
            oos.writeObject(num);

            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(oos!=null){
                try {
                    oos.close();
                } catch (IOException e) {
                }
            }
        }   

        //反序列化
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        
        try {
            fis = new FileInputStream(args[0]);
            ois = new ObjectInputStream(fis);
            
            Integer num= (Integer)ois.readObject();
            System.out.println(num);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(ois!=null){
                try {
                    ois.close();
                } catch (IOException e) {
                }
            }
        }        

定義規則:

1.當對象被序列化時,JVM只序列化其字段值,方法和構造器不參與序列化。

2.如果對象的某個字段引用了另一個對象,則被引用對象的字段也將被序列化。

3.有些對象類(如FileInputStream)是不可序列化的,因為字段值與操作系統相關的即時信息。

4.訪問控制修飾符對序列化無影響。

5.靜態變量不參與序列化,因為它不屬於對象。

註意:當對象被反序列化時,靜態變量的值被設為存儲在相應類變量的值。

File類與序列化