字節(jié)流和字符流的操用到的編碼表和默認(rèn)緩沖區(qū)大小袋狞。如果要自己指定這些值吉挣,需要構(gòu)造兩個(gè)方法蜀备。
想要實(shí)現(xiàn)字符流和字節(jié)流之間的相互轉(zhuǎn)換需要用到兩個(gè)類:
OutputStreamWriter 是字符流通向字節(jié)流的橋梁
InputStreamReader 是字節(jié)流通向字符流的橋梁
先看示例:
package com.zhaoqian.transstream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Demo1 {
public static void main(String[] args) throws IOException {
File f = new File("F:"+File.separator+"Demo"+File.separator+"test.txt");
// OutputStreamWriter 是字符流通向字節(jié)流的橋梁,創(chuàng)建了一個(gè)字符流通向字節(jié)流的對(duì)象
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
osw.write("我是字符流轉(zhuǎn)換成字節(jié)流輸出的");
osw.close();
}
}
字節(jié)流轉(zhuǎn)換成字符流删咱,編碼格式為UTF-8
package com.zhaoqian.transstream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo2 {
public static void main(String[] args) throws IOException {
File f = new File("F:"+File.separator+"Demo"+File.separator+"test.txt");
InputStreamReader inr = new InputStreamReader(new FileInputStream(f),"UTF-8");
char[] buf = new char[1024];
int len = inr.read(buf);
System.out.println(new String(buf,0,len));
inr.close();
}
}
獲取鍵盤錄入并存儲(chǔ)
package com.zhaoqian.transstream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo3 {
// 鍵盤錄入,存儲(chǔ)在文件中
public static void main(String[] args) throws IOException {
// 將字節(jié)流轉(zhuǎn)換成字符流奶赔,并使用字符緩沖區(qū)獲取鍵盤錄入
BufferedReader bur = new BufferedReader(new InputStreamReader(System.in));
// 目的文件
FileWriter fw = new FileWriter("F:\\Demo\\test.txt");
// 字符緩沖區(qū)惋嚎,輸出數(shù)據(jù)
BufferedWriter bw = new BufferedWriter(fw);
String line = null;
while((line=bur.readLine())!=null){
if ("over".equals(line)) {
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
bur.close();
}
}