1:登錄注冊IO版本案例(掌握)
要求,對著寫一遍。
cn.itcast.pojo User
cn.itcast.dao UserDao
cn.itcast.dao.impl UserDaoImpl(實現我不管)
cn.itcast.game GuessNumber
cn.itcast.test UserTest
2:數據操作流(操作基本類型數據的流)(理解)
(1)可以操作基本類型的數據
(2)流對象名稱
DataInputStream
DataOutputStream
3:內存操作流(理解)
(1)有些時候我們操作完畢后,未必需要產生一個文件,就可以使用內存操作流。
(2)三種
A:ByteArrayInputStream,ByteArrayOutputStream
B:CharArrayReader,CharArrayWriter
C:StringReader,StringWriter
4:打印流(掌握)
(1)字節打印流,字符打印流
(2)特點:
A:只操作目的地,不操作數據源
B:可以操作任意類型的數據
C:如果啟用了自動刷新,在調用println()方法的時候,能夠換行并刷新
D:可以直接操作文件
問題:哪些流可以直接操作文件呢?
看API,如果其構造方法能夠同時接收File和String類型的參數,一般都是可以直接操作文件的
(3)復制文本文件
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);
String line = null;
while((line=br.readLine())!=null) {
pw.println(line);
}
pw.close();
br.close();
5:標準輸入輸出流(理解)
(1)System類下面有這樣的兩個字段
in 標準輸入流
out 標準輸出流
(2)三種鍵盤錄入方式
A:main方法的args接收參數
B:System.in通過BufferedReader進行包裝
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
C:Scanner
Scanner sc = new Scanner(System.in);
(3)輸出語句的原理和如何使用字符流輸出數據
A:原理
System.out.println("helloworld");
PrintStream ps = System.out;
ps.println("helloworld");
B:把System.out用字符緩沖流包裝一下使用
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
6:隨機訪問流(理解)
(1)可以按照文件指針的位置寫數據和讀數據。
(2)案例:
A:寫數據
B:讀數據
C:獲取和改變文件指針的位置
7:合并流(理解)
(1)把多個輸入流的數據寫到一個輸出流中。
(2)構造方法:
A:SequenceInputStream(InputStream s1, InputStream s2)
B:SequenceInputStream(Enumeration<? extends InputStream> e)
8:序列化流(理解)
(1)可以把對象寫入文本文件或者在網絡中傳輸
(2)如何實現序列化呢?
讓被序列化的對象所屬類實現序列化接口。
該接口是一個標記接口。沒有功能需要實現。
(3)注意問題:
把數據寫到文件后,在去修改類會產生一個問題。
如何解決該問題呢?
在類文件中,給出一個固定的序列化id值。
而且,這樣也可以解決黃色警告線問題
(4)面試題:
什么時候序列化?
如何實現序列化?
什么是反序列化?
9:Properties(理解)
(1)是一個集合類,Hashtable的子類
(2)特有功能
A:public Object setProperty(String key,String value)
B:public String getProperty(String key)
C:public Set<String> stringPropertyNames()
(3)和IO流結合的方法
把鍵值對形式的文本文件內容加載到集合中
public void load(Reader reader)
public void load(InputStream inStream)
把集合中的數據存儲到文本文件中
public void store(Writer writer,String comments)
public void store(OutputStream out,String comments)
(4)案例:
A:根據給定的文件判斷是否有鍵為"lisi"的,如果有就修改其值為100
B:寫一個程序實現控制猜數字小游戲程序不能玩超過5次
10:NIO(了解)
(1)JDK4出現的NIO,對以前的IO操作進行了優化,提供了效率。但是大部分我們看到的還是以前的IO
(2)JDK7的NIO的使用
Path:路徑
Paths:通過靜態方法返回一個路徑
Files:提供了常見的功能
復制文本文件
把集合中的數據寫到文本文件