首页 > 代码库 > 转换流--InputStreamReader ,OutputStreamWriter

转换流--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