轉(zhuǎn)載請注明出處:http://www.reibang.com/p/df565490b47d
1.序列流(了解)
- 1.什么是序列流
- 序列流可以把多個字節(jié)輸入流整合成一個, 從序列流中讀取數(shù)據(jù)時, 將從被整合的第一個流開始讀, 讀完一個之后繼續(xù)讀第二個, 以此類推.
- 2.使用方式
- 整合兩個: SequenceInputStream(InputStream, InputStream)
FileInputStream fis1 = new FileInputStream("a.txt"); //創(chuàng)建輸入流對象,關(guān)聯(lián)a.txt FileInputStream fis2 = new FileInputStream("b.txt"); //創(chuàng)建輸入流對象,關(guān)聯(lián)b.txt SequenceInputStream sis = new SequenceInputStream(fis1, fis2); //將兩個流整合成一個流 FileOutputStream fos = new FileOutputStream("c.txt"); //創(chuàng)建輸出流對象,關(guān)聯(lián)c.txt int b; while((b = sis.read()) != -1) { //用整合后的讀 fos.write(b); //寫到指定文件上 } sis.close(); fos.close();
2.內(nèi)存輸出流*****(掌握)
- 1.什么是內(nèi)存輸出流
- 該輸出流可以向內(nèi)存中寫數(shù)據(jù), 把內(nèi)存當作一個緩沖區(qū), 寫出之后可以一次性獲取出所有數(shù)據(jù)
- 2.使用方式
- 創(chuàng)建對象: new ByteArrayOutputStream()
- 寫出數(shù)據(jù): write(int), write(byte[])
- 獲取數(shù)據(jù): toByteArray()
FileInputStream fis = new FileInputStream("a.txt"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int b; while((b = fis.read()) != -1) { baos.write(b); } //byte[] newArr = baos.toByteArray(); //將內(nèi)存緩沖區(qū)中所有的字節(jié)存儲在newArr中 //System.out.println(new String(newArr)); System.out.println(baos); fis.close();
3.隨機訪問流概述和讀寫數(shù)據(jù)(了解)
- A:隨機訪問流概述
RandomAccessFile概述
RandomAccessFile類不屬于流,是Object類的子類宾尚。但它融合了InputStream和OutputStream的功能丙笋。
-
支持對隨機訪問文件的讀取和寫入谢澈。
- B:read(),write(),seek()
4.對象操作流ObjecOutputStream(了解)
- 1.什么是對象操作流
- 該流可以將一個對象寫出, 或者讀取一個對象到程序中. 也就是執(zhí)行了序列化和反序列化的操作.
- 2.使用方式
- 寫出: new ObjectOutputStream(OutputStream), writeObject()
5.對象操作流ObjectInputStream(了解)
* 讀取: new ObjectInputStream(InputStream), readObject()
6.加上id號(了解)
- 注意
- 要寫出的對象必須實現(xiàn)Serializable接口才能被序列化
- 不用必須加id號
7.數(shù)據(jù)輸入輸出流(了解)
- 1.什么是數(shù)據(jù)輸入輸出流
- DataInputStream, DataOutputStream可以按照基本數(shù)據(jù)類型大小讀寫數(shù)據(jù)
- 例如按Long大小寫出一個數(shù)字, 寫出時該數(shù)據(jù)占8字節(jié). 讀取的時候也可以按照Long類型讀取, 一次讀取8個字節(jié).
8.打印流的概述和特點(掌握)
- 1.什么是打印流
該流可以很方便的將對象的toString()結(jié)果輸出, 并且自動加上換行, 而且可以使用自動刷出的模式
-
System.out就是一個PrintStream, 其默認向控制臺輸出信息
PrintStream ps = System.out; ps.println(97); //其實底層用的是Integer.toString(x),將x轉(zhuǎn)換為數(shù)字字符串打印 ps.println("xxx"); ps.println(new Person("張三", 23)); Person p = null; ps.println(p); //如果是null,就返回null,如果不是null,就調(diào)用對象的toString()
- 2.使用方式
打印: print(), println()
自動刷出: PrintWriter(OutputStream out, boolean autoFlush, String encoding)
-
打印流只操作數(shù)據(jù)目的
PrintWriter pw = new PrintWriter(new FileOutputStream("g.txt"), true); pw.write(97); pw.print("大家好"); pw.println("你好"); //自動刷出,只針對的是println方法 pw.close();
9.標準輸入輸出流概述和輸出語句
- 1.什么是標準輸入輸出流(掌握)
- System.in是InputStream, 標準輸入流, 默認可以從鍵盤輸入讀取字節(jié)數(shù)據(jù)
- System.out是PrintStream, 標準輸出流, 默認可以向Console中輸出字符和字節(jié)數(shù)據(jù)
- 2.修改標準輸入輸出流(了解)
- 修改輸入流: System.setIn(InputStream)
- 修改輸出流: System.setOut(PrintStream)
System.setIn(new FileInputStream("a.txt")); //修改標準輸入流 System.setOut(new PrintStream("b.txt")); //修改標準輸出流 InputStream in = System.in; //獲取標準輸入流 PrintStream ps = System.out; //獲取標準輸出流 int b; while((b = in.read()) != -1) { //從a.txt上讀取數(shù)據(jù) ps.write(b); //將數(shù)據(jù)寫到b.txt上 } in.close(); ps.close();
10.修改標準輸入輸出流拷貝圖片(了解)
System.setIn(new FileInputStream("IO圖片.png")); //改變標準輸入流
System.setOut(new PrintStream("copy.png")); //改變標準輸出流
InputStream is = System.in; //獲取標準輸入流
PrintStream ps = System.out; //獲取標準輸出流
int len;
byte[] arr = new byte[1024 * 8];
while((len = is.read(arr)) != -1) {
ps.write(arr, 0, len);
}
is.close();
ps.close();
11.兩種方式實現(xiàn)鍵盤錄入(了解)
- A:BufferedReader的readLine方法。
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- B:Scanner
12.Properties的概述和作為Map集合的使用(了解)
- A:Properties的概述
- Properties 類表示了一個持久的屬性集御板。
- Properties 可保存在流中或從流中加載锥忿。
- 屬性列表中每個鍵及其對應(yīng)值都是一個字符串。
- B:案例演示
- Properties作為Map集合的使用
13.Properties的特殊功能使用(了解)
- A:Properties的特殊功能
- public Object setProperty(String key,String value)
- public String getProperty(String key)
- public Enumeration<String> stringPropertyNames()
- B:案例演示
- Properties的特殊功能
14.Properties的load()和store()功能(了解)
- A:Properties的load()和store()功能