物件的輸入輸出流 : 物件的輸入輸出流 主要的作用是用於寫物件的資訊與讀取物件的資訊。 物件資訊一旦寫到檔案上那麼物件的資訊就可以做到持久化了
物件的輸出流: objectoutputstream .
物件的輸入流: objectinputstream
輸入輸出流要注意的細節:
1. 如果物件需要被寫出到檔案上,那麼物件所屬的類必須要實現serializable介面。 serializable介面沒有任何的方法,是乙個標識介面而已。
2. 物件的反序列化建立物件的時候並不會呼叫到構造方法的、
3. serialversionuid 是用於記錄class檔案的版本資訊的,serialversionuid這個數字是通過乙個類的類名、成員、包名、工程名算出的乙個數字。
4. 使用objectinputstream反序列化的時候,objeectinputstream會先讀取檔案中的serialversionuid,然後與本地的class檔案的serialversionuid
進行對比,如果這兩個id不一致,那麼反序列化就失敗了。
5. 如果序列化與反序列化的時候可能會修改類的成員,那麼最好一開始就給這個類指定乙個serialversionuid,如果一類已經指定的serialversionuid,然後
在序列化與反序列化的時候,jvm都不會再自己算這個 class的serialversionuid了。
6. 如果乙個物件某個資料不想被序列化到硬碟上,可以使用關鍵字transient修飾。
7. 如果乙個類維護了另外乙個類的引用,那麼另外乙個類也需要實現serializable介面。
properties(配置檔案類): 主要用於生產配置檔案與讀取配置檔案的資訊。
properties要注意的細節:
1. 如果配置檔案的資訊一旦使用了中文,那麼在使用store方法生成配置檔案的時候只能使用字元流解決,如果使用位元組流生成配置檔案的話,
預設使用的是iso8859-1碼表進行編碼儲存,這時候會出現亂碼。
2. 如果properties中的內容發生了變化,一定要重新使用properties生成配置檔案,否則配置檔案資訊不會發生變化。
/*需求: 使用properties實現本軟體只能 執行三次,超過了三次之後就提示購買正版,退jvm.
*/public class demo5
//建立properties物件。
properties properties = new properties();
//把配置檔案的資訊載入到properties中
properties.load(new fileinputstream(file));
fileoutputstream fileoutputstream = new fileoutputstream(file);
int count = 0; //定義該變數是用於儲存軟體的執行次數的。
//讀取配置檔案的執行次數
string value = properties.getproperty("count");
if(value!=null)
//判斷使用的次數是否已經達到了三次,
if(count==3)
count++;
system.out.println("你已經使用了本軟體第"+count+"次");
properties.setproperty("count",count+"");
//使用properties生成乙個配置檔案
properties.store(fileoutputstream,"runtime");}}
另乙個經典的用法就是io遞迴的使用:
public class demo10
//刪除了乙個非空的目錄
public static void deletedir(file dir)else if(file.isdirectory())
} dir.delete(); }
public static void listfiles3(file dir,string space)else if(file.isdirectory())}}
//列出乙個資料夾的子孫檔案與目錄。
public static void listfiles2(file dir,string space)else if(file.isdirectory())}}
//列出乙個資料夾的子孫檔案與目錄。
public static void listfiles1(file dir)else if(file.isdirectory())
}
}}
Java IO學習筆記
1.宣告乙個檔案物件,separator代表 會因作業系統的不同而不同,比如linux下是 file f new file d file.separator test.txt 2.建立檔案 f.createnewfile 3.刪除檔案 f.delete 4.判斷檔案是否存在 f.exists 3.建...
javaIO學習筆記
1b.接收鍵盤的輸入 bufferedreader stdin new bufferedreader new inputstreamreader system.in system.out.println enter a line system.out.println stdin.readline 2...
JAVA IO流學習筆記(基礎)
基礎知識 1 字元流 2 位元組流 inputstream 讀取 與字元流的思路一樣 轉換 從檔案 文字 inputstreamreader 位元組到字元的橋梁 從文字 檔案 outputstreamwriter 字元到位元組的橋梁 例如 把乙個檔案存到另外乙個儲存空間上。技巧 1 各種io流下的子...