转换流概述
转换输入流
InputStreamReader:为对应编码格式的流读取,和原来保存的字符编码格式相同。传入的是一个字节流 构造方法:
InputStreamReader(InputStream in):使用默认字符编码创建InputStreamReader对象 InputStreamReader(InputStream in,String chatset):使用指定的字符编码创建InputStreamReader对象 代码示例:
//原来文件保存的是GBK格式
InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"),"GBK");
//一次读取一个字符数据
int ch;
while ((ch=isr.read())!=‐1) {
System.out.print((char)ch);
}
转换输出流
OutputStreamWriter:将传入的字符流转换为要求的编码格式 构造方法:
OutputStreamWriter(OutputStream out):使用默认字符编码创建OutputStreamWriter对象 OutputStreamWriter(OutputStream out,String charset):使用指定的字符编码创建OutputStreamWriter对象 代码示例-----转换为GBK格式
//写入一个utf-8编码的文件
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"utf-8");
char[] ch = new char[10];
OutputStreamWriter gbk = new OutputStreamWriter(new FileOutputStream("bc.txt"), "GBK");
int len;
while ((len = isr.read(ch)) != -1){
gbk.write(ch,0,len);
}
isr.close();
gbk.close();
总结
可以通过输出转换流将另一种格式的编码格式,转换为另一个编码格式 读相应的数据时,转换输入流还是得按原来数据的编码格式读取,否则乱码