java io学习(十七) CharArrayReader(字符数组输入流)

CharArrayReader 介绍

CharArrayReader 是字符数组输入流。它和ByteArrayInputStream类似,只不过ByteArrayInputStream是字节数组输入流,而CharArray是字符数组输入流。CharArrayReader 是用于读取字符数组,它继承于Reader。操作的数据是以字符为单位!

CharArrayReader 函数列表

CharArrayReader(char[] buf)
CharArrayReader(char[] buf, int offset, int length)

void      close()
void      mark(int readLimit)
boolean   markSupported()
int       read()
int       read(char[] buffer, int offset, int len)
boolean   ready()
void      reset()
long      skip(long charCount)

Reader和CharArrayReader源码分析

Reader是CharArrayReader的父类,我们先看看Reader的源码,然后再学CharArrayReader的源码。

1. Reader源码分析(基于jdk1.7.40)

package java.io;

public abstract class Reader implements Readable, Closeable {

    protected Object lock;

    protected Reader() {
        this.lock = this;
    }

    protected Reader(Object lock) {
        if (lock == null) {
            throw new NullPointerException();
        }
        this.lock = lock;
    }

    public int read(java.nio.CharBuffer target) throws IOException {
        int len = target.remaining();
        char[] cbuf = new char[len];
        int n = read(cbuf, 0, len);
        if (n > 0)
            target.put(cbuf, 0, n);
        return n;
    }

    public int read() throws IOException {
        char cb[] = new char[1];
        if (read(cb, 0, 1) == -1)
            return -1;
        else
            return cb[0];
    }

    public int read(char cbuf[]) throws IOException {
        return read(cbuf, 0, cbuf.length);
    }

    abstract public int read(char cbuf[], int off, int len) throws IOException;

    private static final int maxSkipBufferSize = 8192;

    private char skipBuffer[] = null;

    public long skip(long n) throws IOException {
        if (n < 0L)
            throw new IllegalArgumentException("skip value is negative");
        int nn = (int) Math.min(n, maxSkipBufferSize);
        synchronized (lock) {
            if ((skipBuffer == null) || (skipBuffer.length < nn))
                skipBuffer = new char[nn];
            long r = n;
            while (r > 0) {
                int nc = read(skipBuffer, 0, (int)Math.min(r, nn));
                if (nc == -1)
                    break;
                r -= nc;
            }
            return n - r;
        }
    }

    public boolean ready() throws IOException {
        return false;
    }

    public boolean markSupported() {
        return false;
    }

    public void mark(int readAheadLimit) throws IOException {
        throw new IOException("mark() not supported");
    }

    public void reset() throws IOException {
        throw new IOException("reset() not supported");
    }

     abstract public void close() throws IOException;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, char
, public
, throws
, Closeable
, ioException
CharArrayReader
,以便于您获取更多的相关知识。

时间: 2024-12-27 18:16:49

java io学习(十七) CharArrayReader(字符数组输入流)的相关文章

java io系列18之 CharArrayReader(字符数组输入流)

从本章开始,我们开始对java io中的"字符流"进行学习.首先,要学习的是CharArrayReader.学习时,我们先对CharArrayReader有个大致了解,然后深入了解一下它的源码,最后通过示例来掌握它的用法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_18.html CharArrayReader 介绍 CharArrayReader 是字符数组输入流.它和ByteArrayInputStream类似,只不过Byte

java io学习(十三) 数据输入流的认知、源码和示例

DataInputStream(数据输入流)的认知.源码和示例 DataInputStream 介绍 DataInputStream 是数据输入流.它继承于FilterInputStream. DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型".应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据. DataInputStream 函数列

java io学习(十一) 缓冲输入流的认知、源码和示例

BufferedInputStream(缓冲输入流)的认知.源码和示例 本章内容包括3个部分:BufferedInputStream介绍,BufferedInputStream源码,以及BufferedInputStream使用示例. BufferedInputStream 介绍 BufferedInputStream 是缓冲输入流.它继承于FilterInputStream. BufferedInputStream 的作用是为另一个输入流添加一些功能,例如,提供"缓冲功能"以及支持&

急求:用java能不能实现由字符数组复制给字符串?由于是初学者,在线等待

问题描述 急求:用java能不能实现由字符数组复制给字符串?由于是初学者,在线等待 解决方案 解决方案二:直接用字符数组构造一个字符串就可以:chardata[]={'a','b','c'};Stringstr=newString(data);解决方案三:观点同楼上~~解决方案四:用clone克隆也行解决方案五:这问题比较经典解决方案六:用循环赋值也行啊.解决方案七:方法很多.....直接newString(Char[]value);还可以用StringBuffer的append(charc)函

java io学习(二十二) BufferedReader(字符缓冲输入流)

BufferedReader 介绍 BufferedReader 是缓冲字符输入流.它继承于Reader. BufferedReader 的作用是为其他字符输入流添加一些缓冲功能. BufferedReader 函数列表 BufferedReader(Reader in) BufferedReader(Reader in, int size) void close() void mark(int markLimit) boolean markSupported() int read() int

java io学习(十八) CharArrayWriter(字符数组输出流)

CharArrayWriter 介绍 CharArrayReader 用于写入数据符,它继承于Writer.操作的数据是以字符为单位! CharArrayWriter 函数列表 CharArrayWriter() CharArrayWriter(int initialSize) CharArrayWriter append(CharSequence csq, int start, int end) CharArrayWriter append(char c) CharArrayWriter ap

java io学习(二十三) BufferedWriter(字符缓冲输出流)

BufferedWriter 介绍 BufferedWriter 是缓冲字符输出流.它继承于Writer. BufferedWriter 的作用是为其他字符输出流添加一些缓冲功能. BufferedWriter 函数列表 // 构造函数 BufferedWriter(Writer out) BufferedWriter(Writer out, int sz) void close() // 关闭此流,但要先刷新它. void flush() // 刷新该流的缓冲. void newLine()

java io学习(十九) PipedReader和PipedWriter

本章,我们学习PipedReader和PipedWriter.它们和"PipedInputStream和PipedOutputStream"一样,都可以用于管道通信. PipedWriter 是字符管道输出流,它继承于Writer. PipedReader 是字符管道输入流,它继承于Writer. PipedWriter和PipedReader的作用是可以通过管道进行线程间的通讯.在使用管道通信时,必须将PipedWriter和PipedReader配套使用. PipedWriter和

java io学习(十四) DataOutputStream的认知、源码和示例

DataOutputStream(数据输出流)的认知.源码和示例 本章介绍DataOutputStream.我们先对DataOutputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. DataOutputStream 介绍 DataOutputStream 是数据输出流.它继承于FilterOutputStream. DataOutputStream 是用来装饰其它输出流,将DataOutputStream和DataInputStream输入流配合使用,"允许应用