1 案例(重做)
案例1:將集合中的對象進行排序,排序完成之後存儲到文件中。使用TreeSet集合
案例2:複製單級目錄
copyFolder() copyFile()
案例3:複製多級目錄
2 標準輸入流和輸出流(瞭解)
System.in:屬於字節流,接收控制檯輸入的內容,使用方式如下:
方式1:Scanner sc=new Scanner(System.in);
方式2:BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out:屬於字節流,將數據打印在控制檯輸出,使用方式如下
System.out.println(數據);
3 打印流(瞭解)
字節打印流:PrintStream
write(97)、print(97)以及println(97)的區別?
write(97); //a
print(97); //97
println(97); //97並且換行
字符打印流:PrintWriter
構造方法:
PrintWriter(String fileName):根據字符串類型的文件路徑創建字符打印流對象,需要手動調用flush方法獲取close方法刷新到文件中。
PrintWriter(Writer out, boolean autoFlush):創建字符打印流對象,需要一個Writer,參數2表示自動刷新。當調用println ,
printf ,或format方法時自動刷新。
成員方法:
public void println("字符串");
4 序列化流和反序列化流(瞭解)
序列化:將對象寫到文件中。
反序列化:將文件中的對象讀到內存中。
序列化流:ObjectOutputStream
構造方法:ObjectOutputStream(OutputStream out)
成員方法:void writeObject(Object obj) 將obj對象寫到文件中
反序列化流:ObjectInputStream
構造方法:ObjectInputStream(InputStream in)
成員方法:Object readObject()
注意事項:
1、序列化的時候,對象需要實現一個Serializable標記型接口。
2、在反序列化的時候如果出現class文件中的serialVersionUID和保存對象的文件中的serialVersionUID不一致導致的InvalidClassException異常
解決辦法:在Java類中固定serialVersionUID:private static final long serialVersionUID = 42L;
3、如果某個成員變量不想被序列化,那麼使用transient修飾該成員變量
4、如果序列化了多個對象需要使用使用反序列化流while循環讀對象,讀到文件的末尾不是返回null,而是拋出一個EOFException異常
解決辦法:
方式1:使用try...catch處理異常,不打印異常信息。
方式2:如果是需要將多個對象序列化到文件中,可以先將對象存到集合中,將集合序列化到文件中。(還是序列化一個對象)
5 Properties集合(重點*****)
概念:Properties是一個雙列集合,實現了Map接口。
構造方法:
Properties properties=new Properties();
常規方法:
Object setProperty(String key, String value):根據key存value值,返回值是被替換的value。
String getProperty(String key):根據key獲取對應的value值
Properties集合和IO結合(重點******)
將集合中的數據存到文件中:(瞭解)
void store(Writer writer, String comments):參數2comments表示添加的數據的描述信息,相當於註釋。可以是null表示沒有
將文件中的數據讀到集合中(重點掌握******************)
void load(Reader reader):讀取文件中的數據到集合中。
Properties集合在開發中的使用:(重點******)
作爲配置文件使用:使用Properties加載配置文件中的數據,在程序中使用。
特殊:
1、將來的配置文件格式必須如下:
itheima003=林青霞
itheima001=張曼玉
itheima002=王祖賢
2、配置文件的後綴名不叫txt,一般是.properties結尾,這種文件在開發中成爲屬性文件。