转换流--InputStreamReader ,OutputStreamWriter

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换流--InputStreamReader ,OutputStreamWriter相关的知识,希望对你有一定的参考价值。

BufferedReader 字符流,只能装饰字符流,不能装饰字节流。有个重要且好用的方法是readLine()整行读取字符。

但是InputStream是字节流,没有resdLine方法,那么字节流InputStream如何使用readLine方法呢???

如果能把字节流转换成字符流就可以使用BufferedReader装饰流。也就可以使用readLine方法。

 

把字节流转换成字符流,或者把字符流转为字节流    称为转换流: 

InputStreamReader(前缀是功能,后缀是体系):字节流通向字符流的桥梁他可以使用指定的charset读取字节流并将其解码为字符

OutputStreamWriter:字符流通向字节流的桥梁,他可以使用指定的charset将要写入流的字符编码成字节 

 

InputStream in=system.in;读取键盘输入的字节流,如果是读取一个中文,需要读两次才可以

InputStreamReader isr=new InputStreamReader(in);将字节流转换为字符流。如果是读一个中文,一次就可以读完

BufferedReader bufr=new BufferedReader(isr);

string line=null;

while((line=bufr.readLine())!=-1)

{

  if("over".equals(line))当读取到over就结束,否则转大写输出。

    break;

  system.out.println(line.toUpperCase())

}

 

OutputStreamWriter:

//读取键盘输入,转大写后输出到控制台

InputStream in=system.in;读取键盘输入的字节流,

InputStreamReader isr=new InputStreamReader(in);将字节流转换为字符流。

BufferedReader bufr=new BufferedReader(isr);

上面三句可以合为一句:

BufferedReader bufr=new BufferedReader(new InputStreamReader(system.in));

 

//输出到控制台

OutputStream out=system.out;

OutputStreamWriter osw=new OutputStreamWriter(out);

BufferedWriter bfw=new BufferedWriter(osw);

上面三句可以合为一句:

BufferedWriter bfw=new BufferedWriter(new OutputStreamWriter(system.ou));

 

 

string line=null;

while((line=bufr.readLine())!=-1)

{

  if("over".equals(line))当读取到over就结束,否则转大写输出。

    break;

  bfw.write(line.toUpperCase());

  bfw.newLine();

  bfw.flush();

}

 

 1 /**
 2      * @param args
 3      * @throws IOException 
 4      */
 5     public static void main(String[] args) throws IOException {
 6 
 7         
 8         /*
 9          * 1,需求:将键盘录入的数据写入到一个文件中。 
10          * 
11          * 2,需求:将一个文本文件内容显示在控制台上。
12          * 
13          * 3,需求:将一个文件文件中的内容复制到的另一个文件中。
14          */
15         
16         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
17         
18         BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt")));
19         
20         
21         String line = null;
22         
23         while((line=bufr.readLine())!=null){
24             if("over".equals(line))
25                 break;
26             
27             bufw.write(line.toUpperCase());
28             bufw.newLine();
29             bufw.flush();
30         }
31         
32         
33     }

 

以上是关于转换流--InputStreamReader ,OutputStreamWriter的主要内容,如果未能解决你的问题,请参考以下文章

转换流:字节输入流转换成字符输入流 InputStreamReader

转换流——OutputStreamWriter类与InputStreamReader类

新手小白学java 编码转换流 OutputStreamWriter InputStreamReader

75. InputStreamReader和OutputStreamWriter(转换流--字节流转换成字符流)

转换流--InputStreamReader ,OutputStreamWriter

I/O流任务