JAVA IO流(一)

来源:互联网 发布:淘宝客服具体工作 编辑:程序博客网 时间:2024/05/14 23:46

   IO流根据处理数据类型的不同可分为字符流和字节流;根据数据流向不同可分为输入流和输出流。故本文主要按这2个方向描述IO流。另外JAVA用装饰者模式实现关于IO流的类,装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

字符流

     字符输入流Reader

     用于读取字符流的抽象类。只能通过子类继承,子类必须实现其方法有read(char[], int, int) close(),大多数的子类会重定义一些额外的方法。

        1.       BufferedReader

     从字符流中读取文本,将文本字符读入到缓冲区中,当缓冲满时或者我们主动flush时,再读入到内存当中。优点:实现字符、数组和行的高效读取。

     案例1:使用BufferedReader从键盘读数据

      2 .    FileReader

        用于读取文件的便捷类。
        案例2:从txt文本中读取内容

        

     3.       FileterReader

  用于读取已过滤的字符流的抽象类。抽象类 FilterReader 自身提供了一些将所有请求传递给所包含的流的默认方法。FilterReader 的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

   4.       InputStreamReader

  将字节流读取转化为字符流读取,是字节流通向字符流的桥梁;使用指定字符解码方式,也可以显示给出其解码方式。如案例1中的System.in读取的是字节流,而InputStreamReader将字节流转化为字符流,

   5.       StringReader

   从字符串冲读取字符序列。该类不常使用,了解即可。

   6.       PipedReader

   管道流,PipedWriter在一起使用。

   案例3:管道读取流从管道写入流读取内容

   

      字符写入流Writer

      用于写入字符流的抽象类。子类必须实现的方法有 write(char[], int, int)flush() close()。同Reader类似,子类大多会定义一些额外的方法。

      1.      BufferedWriter

    和BufferReader类似,向文本中写入数据,写的时候先向缓冲区中写,当缓冲区满时或主动flush()时,再向目的地中写入。缓冲区的大小我们可以自己设置,但要合理选择缓冲区的大小。

    案例4:向控制台写数据

   

      2.       FileWriter

    用于向文件写入字符的便捷类;

     案例5:向文本文件中写内容

 

     3.       FilterWriter

    用于写入已过滤的字符流的抽象类。抽象类 FilterWriter自身提供了一些将所有请求传递给所包含的流的默认方法。FilterWriter的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

     4.       OutputStreamWriter

    字符流通向字节流的桥梁;和InputStreamReader类似,用法参见案例4

     5.       PrintWriter

     打印流,为其他输出流添加了额外的功能,与其他输入流不同,它永远不会抛出异常;它还添加了自动刷新的功能,即不用自己调用flush()方法,用法如下

      PrintWriter pw = new PrintWriter(new FileWriter(“文件名”),true);

      6.       StringWriter

      一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。也不太常了解即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0