【Java】IO流--转换流--InpuStreamReader、OutputStreamWriter

转换流--InpuStreamReader、OutputStreamWriter

类型:处理流

作用

用于将字节流转化成字符流,字符流与字节流之间的桥梁

InputStreamReader

字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。

InputStreamReader 的作用是把 InputStream 转换成 Reader

OutputStreamWriter

OutputStreamWriter是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。

OutputStreamWriter 的作用是把 OutputStream 转换成 Writer

存在将字节流转换成字符流的转换流,因为字符流操作文本更简单

不存在把字符流转换成字节流的转换流,因为没有必要

代码

System.in 代表标准输入,即键盘输入,是 InputStream 的实例

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class TestIROW {
    public static void main(String[] args) {    
        BufferedReader br=null;
        BufferedWriter bw=null;
        try {
            //任务需求,从键盘获取数据,写入磁盘文件
            //(1)数据源是标准的输入设备,键盘System.in
            InputStream is=System.in;
            //(2)需要使用转换流,转换成字符流
            InputStreamReader isr=new InputStreamReader(is, "UTF-8");
            //(3)提高读取效率
            br = new BufferedReader(isr);
            //(4)提高写入效率
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F://copy5.txt"), "UTF-8"));
            //(5)写入磁盘文件
            String str=null;
            while(!"over".equals(str=br.readLine())) {
                bw.write(str);
                bw.newLine();
            }
       bw.flush(); }
catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //(6)关闭 if(bw!=null) { try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(br!=null) { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }

猜你喜欢

转载自www.cnblogs.com/syxy/p/12290354.html