一、處理流
用于增強(qiáng)功能,提高性能。位于節(jié)點(diǎn)流之上
1.緩沖流
- 字節(jié)緩沖流:
- BufferdeInputStream
- BufferedOutputStream
- 字符緩沖流:
- BufferedReader(新增readLine()方法)
- BufferedWriter(新增newLine()方法)
要使用新增方法就不能用多態(tài)了
緩沖流使用方法:緩沖流(節(jié)點(diǎn)流) 包裹節(jié)點(diǎn)流。建議使用緩沖流提高性能。
字符緩沖流示例
public static void copy(File src, File dest) throws IOException {
// 選擇流,這里測試新方法,聲明就不能用多態(tài)了。
BufferedReader bread = new BufferedReader(new FileReader(src));
BufferedWriter bwrite = new BufferedWriter(new FileWriter(dest));
// 用來臨時(shí)儲存數(shù)據(jù)的字符串
String str;
// 操作,讀取在while里就讀了
while (null != (str = bread.readLine())) {
bwrite.write(str);
// 類似于\r\n
bwrite.newLine();
// 刷新是個(gè)好習(xí)慣
bwrite.flush();
}
// 關(guān)閉資源
bwrite.close();
bread.close();
}
<br />
二、轉(zhuǎn)換流
字節(jié)流轉(zhuǎn)換為字符流,處理亂碼(編碼集,解碼集)
- 輸入流:InputStreamReader(編碼)
- 輸出流:OutputStreamWriter(解碼)
使用:轉(zhuǎn)換流(字節(jié)流) 即可轉(zhuǎn)為字符流來使用
編碼轉(zhuǎn)碼測試
算了,太簡單,直接看轉(zhuǎn)換流的程序。也是拷貝,同時(shí)使用了兩種流
public static void main(String[] args) throws IOException {
File f=new File("F:/javaIotest/213.txt");
File dest=new File("F:/javaIotest/詩歌.txt");
//InputStreamReder和OutputStreamWriter 字節(jié)流轉(zhuǎn)換為字符流,可以在形參里選擇編碼|解碼集
//這里選擇gbk即Ascall碼編碼,即讀取的文件是gbk格式的,如果不選擇直接使用utf-8的話會亂碼,怎么輸出都不對啦。讀取都錯(cuò)了
BufferedReader is=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
//解碼使用默認(rèn)的平臺解碼,我這里是utf-8,可以選擇任何格式輸出。
BufferedWriter os=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest)));
String str;
while(null!=(str=is.readLine())){
os.write(str);
os.newLine();
os.flush();
}
os.close();
is.close();
}