标签:try fileinput 转换 put exception close leo loading 问题
转换流提供了在字节流和字符流之间的转换
Java API提供了两个转换流:
InputStreamReader: 将InputStream转换为Reader
OutputStreamWriter:将Writer转换为OutputStream
字节流中的数据都是字符时,转成字符流操作更高效。
很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能

转换流:
作用:提供字节流与字符流之间的转换
编码与解码
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();
    }
}
 
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();
    }
}
效果:

标签:try fileinput 转换 put exception close leo loading 问题
原文地址:https://www.cnblogs.com/mengxiaoleng/p/14940212.html