JAVA中InputStreamReader、OutputStr

2020-07-13  本文已影响0人  代码阿强

简介

InputStreamReader用于把字节流转换成字符流,OutputStreamWriter用于把字符流转换成字节流

InputStreamReader

我们先来看看介绍
image.png

这段话的大概意思是说,该类是由字节流通往字符流的桥梁,它能够根据编码表将字节读取并解析成字符。并且还可以自己设置编码表,如果不设置就是用系统默认的。

image.png

由JDK文档可以看到,该类是Reader的子类

同理我们可以盲猜都可以知道对应OutputStreamWriter,它应该是字符流通往字节流的桥梁,它应该是Writer的子类
事实上,确实如此

案例

我们知道System.in拿到的是一个字节流对象,也就是我们的输入其实字节流,同理,System.out的输出也是字节流,我们输入一个字节流,输出一个字节流

import java.io.*;

public class IOMain {
    public static void main(String[] args) throws Exception{
        Test();
    }
    public static void Test() {
        InputStream is=System.in;
        OutputStream os=System.out;
        InputStreamReader isr=new InputStreamReader(is);//输入流,把字符流变成字节流
        OutputStreamWriter osw=new OutputStreamWriter(os);//输出流,字节流变成字符流
        
        BufferedReader br=new BufferedReader(isr);
        BufferedWriter bw=new BufferedWriter(osw);
        
        String line=null;
        try {
            while((line=br.readLine())!=null)
            {
                if("over".equals(line))
                    break;
                bw.write(line);
                bw.newLine();
                bw.flush();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            try {
                isr.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                osw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
    public static void ISReaderTest() {
        InputStreamReader isr=null;
        OutputStreamWriter osw=null;
        try {
            isr=new InputStreamReader(new FileInputStream("C:\\Users\\Administrator\\Desktop\\IO\\Test.txt"));
            osw=new OutputStreamWriter(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\IO\\Test.txt"));
            String str1="I love you1~!\r\n";
            osw.write(str1);
            String str2="I love you2~!\r\n";
            osw.write(str2);
            String str3="I love you3~!\r\n";
            osw.write(str3);
            String str4="I love you4~!\r\n";
            osw.write(str4);
            osw.flush();
            int len=0;
            char[] ch=null;
            while((len=isr.read(ch))!=-1)
            {
                System.out.println(ch);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        {
            try {
                isr.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                osw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
}

上一篇 下一篇

猜你喜欢

热点阅读