Java-IO流系列-转换流
时间:2021-06-28 19:36:57
收藏:0
阅读:0
转换流
什么是转换流
转换流提供了在字节流和字符流之间的转换
Java API提供了两个转换流:
-
InputStreamReader: 将InputStream转换为Reader
-
OutputStreamWriter:将Writer转换为OutputStream
-
字节流中的数据都是字符时,转成字符流操作更高效。
-
很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能
转换流的使用
输入流
-
转换流:
- InputStreamReader:将- -个字节的输入流转换为字徒的输入流
- outputstreamwriter:将-一个字符的输出流转换为字节的输出流
-
作用:提供字节流与字符流之间的转换
-
编码与解码
- 解码:字节、字节数组--->字符数组、 字符串
- 编码:字符数组、字符串--->字节,字节数组
-
InputStreamReader的参数2指明了字符集,具体使用哪个字符集,取决于文件test.txt保存时使用的字符集 InputStreamReader默认是系统的编码
-
注意此时仍应该用try-catch块
package com.dreamcold.io;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo12 {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("test.txt");
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
char[] cbuf=new char[20];
int len;
while ((len=isr.read(cbuf))!=-1){
String str=new String(cbuf,0,len);
System.out.println(str);
}
isr.close();
}
}
- 结果如下:
综合使用InputStreamReader和utputstreamWriter
package com.dreamcold.io;
import java.io.*;
public class Demo13 {
public static void main(String[] args) throws IOException {
File file1=new File("test.txt");
File file2=new File("test2-gbk.txt");
FileInputStream fis=new FileInputStream(file1);
FileOutputStream fos=new FileOutputStream(file2);
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
char[] buf=new char[10];
int len;
while ((len=isr.read(buf))!=-1){
osw.write(buf,0,len);
}
isr.close();
osw.close();
}
}
效果:
评论(0)