Java IO之Reader/Writer

原创 2015年07月06日 20:21:27

Reader和Writer:
Java 1.1对基本的I/O进行了修改,增加了Reader/Writer,但它们并不是用来替代InputStream和OutputStream的。InputStream/OutputStream面向字节,而Reader/Writer兼容Unicode且面向字符。

适配器:
有的时候我们必须把来自于“字节”层次结构中的类和来自“字符”层次结构中的类结合起来使用。为了实现这个目的,需要用到“适配器(Adapter)”类。InputStreamReader可以把InputStream转换为Reader,OutputStreamWriter可以把OutputStream转换为Writer。

Reader的子类:

CharArrayReader    对应于ByteArrayInputStream
FileReader         Reader/InputStreamReader下的子类,对应于FileInputStream
PipedReader        对应于PipedInputStream
StringReader       对应于StringBufferInputStream(已废弃)
FilterReader       对应于FilterInputStream
BufferedReader     对应于BufferInputStream,但它是直接继承Reader的。
LineNumberReader   Reader/BufferedReader下的子类,对应于LineNumberInputStream。
PushbackReader     Reader/FilterReader下的子类,对应于PushbackInputStream。

Writer的子类:

CharArrayWriter    对应于ByteArrayOutputStream
FileWriter         Reader/InputStreamReader下的子类,对应于FileOutputStream
PipedWriter        对应于PipedOutputStream
StringWriter       无相应的类
FilterWriter       对应于FilterOutputStream(抽象类,但没有子类)
BufferedWriter     对应于BufferOutputStream,但它是直接继承Reader的。
PrintWriter        对应于PrintStream

代码实例:
1 CharArrayReader/CharArrayWriter

    public void testCharArray(){
        char[] c={'a','b','c','d'};
        CharArrayReader r=new CharArrayReader(c);
        r.skip(2);
        char temp=(char) r.read();
        CharArrayWriter w=new CharArrayWriter();
        w.write(temp);
        System.out.println(w.size());
        System.out.println(w.toString());
    }
    /*
    Output:
    1
    c
    */

2 FileReader/FileWriter

    public void testFile() {
        File f=new File("FileReaderWriter.txt");
        FileWriter fw=new FileWriter(f);
        fw.write("Hello,this string is writed by FileWriter.");
        /* 此时数据还在缓冲区,需要刷新*/
        fw.flush();
        FileReader fr=new FileReader(f);
        int flag=0;
        while (flag!=-1){
            flag=fr.read();
            System.out.print((char)flag);
        }
    }
    /*
    Output:
    Hello,this string is writed by FileWriter.
    */

3 BufferedReader/BufferWriter
通常建议使用BufferedReader包装所有其read()操作开销可能较大的Reader,如FileReader;使用BufferedWriter包装所有其write()操作开销可能较大的Writer。

    public void testBuffered() {
        File f=new File("FileReaderWriter.txt");
        BufferedWriter bw=new BufferedWriter(new FileWriter(f));
        bw.write("This is the first day.\nThis is the second day.");
        bw.flush();
        BufferedReader br=new BufferedReader(new FileReader(f));        FileReader fr=new FileReader(f);
        String s=br.readLine();
        while(s!=null){
            System.out.println(s);
            s=br.readLine();
        }
    }
    /*
    Output:
    This is the first day.
    This is the second day.
    */

Java-IO之字符输入输出流(Reader和Writer)

以字符为单位的输入流的公共父类是Reader: 以字符为单位的输出流的超类是Writer: 基于JDK8的Reader的源码: public abstract class Reade...
  • qq924862077
  • qq924862077
  • 2016年10月04日 18:19
  • 1377

Java基础--------(7)IO流Reader和Writer

一、简述 Reader和Writer是专门用于读写字符流的抽象类。 Writer和Reader有许多子类,且子类肯定重写了父类的write或者read的方法。 字节流处理单元为1个字节, 操作字...
  • zyf69172
  • zyf69172
  • 2017年06月24日 10:08
  • 163

Java_io体系之Writer、Reader简介、走进源码——12

Java_io体系之Writer、Reader简介、走进源码——12   一:Writer 1、类功能简介: 字符输出流、本身是一个抽象类、是所有字符输出流的父类、与OutputStream相同的是、...
  • chenghuaying
  • chenghuaying
  • 2013年12月09日 12:33
  • 3920

IO流之----字符流(Reader和Writer)和其它流

概述:字符流是可以直接读写字符的IO流。 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出。 字符输入流(FileReader)概述: FileRe...
  • listeners_Gao
  • listeners_Gao
  • 2015年12月10日 13:50
  • 2393

Java IO操作——字节流(OutputStream、InputStream)和字符流(Writer、Reader)

学习目标 掌握流的概念 掌握字节流与字符流的作用 掌握文件的标准操作步骤 掌握字节与字符操作的区别 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序中需要数据的时候就用输入流读取数据,...
  • u013087513
  • u013087513
  • 2016年07月17日 19:32
  • 3546

Reader && Writer

Reader&Writer介绍Reader和Writer分别表示字符输入流和字符输出流,是为了方便高效操作文本文件而产生流操作类。备注:Reader和Writer能够完成的操作,InputStream...
  • nicewuranran
  • nicewuranran
  • 2016年06月28日 21:09
  • 599

Java.Reader_Writer

java中的字符是Unicode编码的, InputStream和OutputStream都是用来处理字节的,在处理字符时需要用getBytes()转换成字节,这就需要编写字节、字符之间的转换代码ja...
  • rcoder
  • rcoder
  • 2010年12月31日 08:53
  • 7638

java类Writer和类Reader小结

字段摘要 protected  Object lock           用于同步针对此流的操作的对象。   构造方法摘要 protecte...
  • chaoyu168
  • chaoyu168
  • 2015年11月03日 17:41
  • 3985

Java 流(Stream)简介:2、Reader 和 Writer

介绍了 InputStream 和 OutputStream,接下来介绍 Reader 和 Writer。这两个类其实就是将 InputStream 和 OutputStream 包装了一下。不过它们...
  • YidingHe
  • YidingHe
  • 2009年04月20日 11:39
  • 4037

Java IO reader and writer

Java IO's Reader and Writer work much like the InputStream and OutputStream with the exception tha...
  • carolzhang8406
  • carolzhang8406
  • 2011年08月24日 16:05
  • 823
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java IO之Reader/Writer
举报原因:
原因补充:

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