InputStreamReader类和OutputStreamWriter类

原创 2013年12月03日 09:50:09


 这两个转换流,可以通过名称看出,这两个类的基类是字符流中的Reader和Writer,而他们的功能就如InputStream和OutputStream那样,读取的是字节和输出的是字节,这样就很好的理解InputStreamReader类和OutputStreamWriter类了,即InputStreamReader读取的是字节然后以一定的编码转换为字符,而OutputStreamWriter是以一定的编码将字符编码为字节后再输出。
     
     InputStreamReader是字符“打包员”,把字节打包成字符; OutputStreamWriter是字符“拆包员”,把字符拆成字节。



1.InputStreamReader类
     将读取的字节转换为字符
      (1)InputStreamReader(InputStream in)
               通过这个构造方法就可以看出 读取进来的是字节
      (2)int read()方法
               这个方法在InputStreamReader类中重写了,不再是直接输出一个字符拆分后的每个字节码了,而是返回的是一个字符
               例:
                   
                    public static void main(String[] args) throws IOException
                    {
                          InputStreamReader input = new InputStreamReader(System.in);
                          int num = -1;
                          while((num = input.read())!=-1){
                                   //如:这里输入一个中文,虽然读取的是字节,但最后输出的也是这个中文,而不是这个中文拆分后的字节码
                                   System.out.println((char)num);
                           }
                     input.close();
                   }
                

2.OutputStreamWriter类
     将要写出的字符转换为字节,再写出
     
     (1)void write(int c) 方法
               因为是直接将字符转换为字节后再写出,所以这里的原数据为字符,在write()方法中会进行处理将传入的字符转换为字节后,再通过在构造方法时传入的OutputStream字节流对象将字节在写出

          例:
                 public static void main(String[] args) throws IOException
                {
                        FileReader reader = new FileReader("demo.txt");//读取字符
                           //字符--->字节
                       OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("demo1.txt"));
                         int num = -1;
                       while((num = reader.read())!=-1){
                              out.write(num);
                         }
                        out.flush();
                         out.close();
                 }
2)write(char[] cbuf,int off,int len)和write(String str,int off,int len)
          因为源数据为字符,所以这里可以是字符数组和字符串
               例:
                   public static void main(String[] args) throws IOException
                   {          
                             FileReader reader = new FileReader("demo.txt");//读取字符         
                            //字符--->字节         
                         OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("demo1.txt"));         
                          out.write("jjj是空的");          
                          out.flush();          
                            out.close();     
                    }

InputStreamReader和OutputStreamWriter的总结:
   1.  在使用这两个类进行操作文件时,一定要明白操作的体系,如果是操作的是纯文本则使用字符流,否则使用字节流,如mp3使用的是字节流,而这里的InputStreamReader和OutputStreamWriter属于字符流体系,所以操作的是字符形式,而一般不操作字节形式的文件,因为编码可能不同

     2.在使用这两个转换流时,一般都会结合BufferedReader和BufferedWriter使用。
          例:
 public static void main(String[] args) throws IOException
     {
          BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt")));
          BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo1.txt")));
          String str = null;
          while((str = reader.readLine())!=null){
               writer.write(str);
               writer.newLine();
          }
          reader.close();
          writer.close();
     }










版权声明:本文为博主原创文章,未经博主允许不得转载。

InputStreamReader 和 OutputStreamWriter类用法-实例讲解很好

InputStreamReader 和 OutputStreamWriter类用法简介。 一、InputStreamReader类 InputStreamReader 将字节流转换为字符流。是字节...

转换流--OutputStreamWriter类与InputStreamReader类

12.4  转换流--OutputStreamWriter类与InputStreamReader类 整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。 O...

java IO操作:转换流--OutputStreamWriter类与InputStreamReader类

整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。 OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出...

为什么会有OutputStreamWriter和InputStreamReader两个转换类的出现以及它们的作用

花了一晚上的时间,看书,看jdk api 总算是把OutputStreamWriter和InputStreamReader两个转换类的出现以及它们的作用弄清楚了,在此分享一下,希望对其他学习者有所帮助...

JAVA 的IO操作(六)OutputStreamWriter类与InputStreamReader类

OutputStreamWriter类与InputStreamReader类  整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。 OutputS...

转换流--OutputStreamWriter类与InputStreamReader类详解

转换流--OutputStreamWriter类与InputStreamReader类详解 整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。 Outpu...
  • zygzzp
  • zygzzp
  • 2013年05月30日 10:49
  • 858

25.Java IO: InputStreamReader && OutputStreamWriter

本文是在Java IO: InputStreamReader和Java IO: OutputStreamWriter翻译而来。Java IO: InputStreamReaderJava InputS...

Java 7之传统I/O - InputStreamReader和OutputStreamWriter

OutputStreamWriter 作用和原理都比较简单。就是将“字节输出流”转换成“字符输出流”。它的原理是,我们创建“字符输出流”对象时,会指定“字节输出流”以及“字符编码”。来看一下源代码,如...

IO流——转换流InputStreamReader、OutputStreamWriter

/* 字符流: FileReader FileWriter。 BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream...

InputStreamReader和OutputStreamWriter的用法

首先说明下字节流和字符流: FileReader,FileWriter 是读字符的,1个字符是2个字节,16位 OutputStream ,InputStream是读字节的,1个字节是8位 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:InputStreamReader类和OutputStreamWriter类
举报原因:
原因补充:

(最多只允许输入30个字)