1:字符流(掌握)
(1)字節(jié)流操作中文數(shù)據(jù)不是特別的方便,所以就出現(xiàn)了轉換流。
轉換流的作用就是把字節(jié)流轉換字符流來使用。
(2)轉換流其實是一個字符流
字符流 = 字節(jié)流 + 編碼表
(3)編碼表
A:就是由字符和對應的數(shù)值組成的一張表
B:常見的編碼表
ASCII
ISO-8859-1
GB2312
GBK
GB18030
UTF-8
C:字符串中的編碼問題
編碼
String -- byte[]
解碼
byte[] -- String
(4)IO流中的編碼問題
A:OutputStreamWriter
OutputStreamWriter(OutputStream os):默認編碼,GBK
OutputStreamWriter(OutputStream os,String charsetName):指定編碼。
B:InputStreamReader
InputStreamReader(InputStream is):默認編碼,GBK
InputStreamReader(InputStream is,String charsetName):指定編碼
C:編碼問題其實很簡單
編碼只要一致即可
(5)字符流
Reader
|--InputStreamReader
|--FileReader
|--BufferedReader
Writer
|--OutputStreamWriter
|--FileWriter
|--BufferedWriter
(6)復制文本文件(5種方式)
2:IO流小結(掌握)
IO流
|--字節(jié)流
|--字節(jié)輸入流
InputStream
int read():一次讀取一個字節(jié)
int read(byte[] bys):一次讀取一個字節(jié)數(shù)組
|--FileInputStream
|--BufferedInputStream
|--字節(jié)輸出流
OutputStream
void write(int by):一次寫一個字節(jié)
void write(byte[] bys,int index,int len):一次寫一個字節(jié)數(shù)組的一部分
|--FileOutputStream
|--BufferedOutputStream
|--字符流
|--字符輸入流
Reader
int read():一次讀取一個字符
int read(char[] chs):一次讀取一個字符數(shù)組
|--InputStreamReader
|--FileReader
|--BufferedReader
String readLine():一次讀取一個字符串
|--字符輸出流
Writer
void write(int ch):一次寫一個字符
void write(char[] chs,int index,int len):一次寫一個字符數(shù)組的一部分
|--OutputStreamWriter
|--FileWriter
|--BufferedWriter
void newLine():寫一個換行符
void write(String line):一次寫一個字符串
3:案例(理解 練習一遍)
A:復制文本文件 5種方式(掌握)
B:復制圖片(二進制流數(shù)據(jù)) 4種方式(掌握)
C:把集合中的數(shù)據(jù)存儲到文本文件
D:把文本文件中的數(shù)據(jù)讀取到集合并遍歷集合
E:復制單級文件夾
F:復制單級文件夾中指定的文件并修改名稱
回顧一下批量修改名稱
G:復制多級文件夾
H:鍵盤錄入學生信息按照總分從高到低存儲到文本文件
I:把某個文件中的字符串排序后輸出到另一個文本文件中
J:用Reader模擬BufferedReader的特有功能
K:模擬LineNumberReader的特有功能