10. Java IO: Readers and Writers

想要查看此教程的目录请点击:Java IO教程目录贴地址


Java IO中的java.io.Reader和java.io.Writer的工作原理很像InputStream和OutputStream,但不同的是reader和writer是基于字符的,他们是用来用些文本数据的。InputStream和OutputStream的基于字节的,记住了?

Reader

Java Reader是所有java reader相关类的基类。子类包括有BufferedReader、PushbackReader、InputStreamReader、StringReader和一些其他的类。
下面这有一个例子:

Reader reader = new FileReader("c:\\data\\myfile.txt");

    int data = reader.read();
    while(data != -1){
        char dataChar = (char) data;
        data = reader.read();
    }

注意,当InputStream每次返回一个字节的时候,这个字节是 0 到 255 直接的值(-1代表没有数据了),Reader每次返回一个字符,意味着返回 0 到 65535 (-1代码数据已经读完)。这并不意味着Reader从已连接的数据源一次读取两个字节,它每次可以一次读取一或多个字节。这取决于文本数据的编码格式。

用InputStreams把Reader连接起来

Java Reader可以被InputStream连接起来。如果你有一个InputStream,并且向从这里读取字符,你可以用InputStreamReader包装它。把InputStream传入InputStreamReader的构造方法:

Reader reader = new InputStreamReader(inputStream);

在构造方法中,你也可以指定一个用来读取文本数据的编码。更多关于这个内容可以参考InputStreamReader章节。

Writer

Java IO API中Writer是所有writer的基类。子类主要包括BufferedWriter和PrintWriter等一些其他的类。
下面是一个Writer的例子:

Writer writer = new OutputStreamWriter(outputStream);

将Readers和Writers结合起来

像stream一样,Reader和Writer也可以组合起来用,成为更有意思的IO。它就像用InputStream把Reader结合起来,或者用OutputStream把Writer结合起来。比如,你可以用BufferedReader把Reader包装起来,或者用BufferedWriter把Writer包装起来,下面是两个这样的例子:

Reader reader = new BufferedReader(new FileReader(...));

Writer writer = new BufferedWriter(new FileWriter(...));

你可能感兴趣的:(10. Java IO: Readers and Writers)