您的位置:首页 > 编程语言 > Java开发

JAVA核心技术学习——流与文件(1.4个抽象类)

2014-10-04 20:59 423 查看
一.老祖宗:4个抽象类

抽象类 InputStream 和 OutputStream 构成输入/输出类的基础。读写操作基于一个字节序列。

抽象类 Reader 和 Writer 专门用于处理Unicode字符。读写操作基于两个字节的Unicode码元。

抽象类InputStream:属于java.io包;实现Closeable接口

常量:

int MAX_SKIP_BUFFER_SIZE = 2048; 能跳过的最大字节数量(skip()用)

抽象方法(子类必须实现)

abstract int read() 读入一个字节。具体的输入流类必须且只需覆盖这个方法以提供具体的输入功能。

非抽象方法

int read(byte b[]) read和write方法在执行时都将阻塞,即等待输入/输出。其他线程则有机会执行。

(阻塞意味着当前线程将失去它对资源的占用。)

int read(byte b[], int off, int len)
从输入流中读取字节,并将其存储在缓冲区数组 b 中。

返回读取的总字节数;如果达到流的末尾,返回 -1;如果len为0,不读取字节并 返回 0;

long skip(long n) 跳过n个字节。跳过的最大字节数为(MAX_SKIP_BUFFER_SIZE = 2048)

实际上临时创建了个byte数组,读入n个字节。

int available() 返回在不阻塞的情况下可获取的字节数。

int close() 释放。

void mark(int readlimit) 打标记。synchronized

void reset()

boolean markSupported() 是否支持打标记

抽象类OutputStream:属于java.io包;实现Closeable,Flushable接口

抽象方法(子类必须实现)

abstract void write(int b) 读入一个字节。具体的输入流类必须且只需覆盖这个方法。

非抽象方法

void write(byte[] b)
void write(byte[] b, int off, int len)

void flush()
void close()

抽象类Reader:属于java.io包;实现Readable, Closeable接口

抽象方法(子类必须实现): read(char[], int, int) close()

skip()方法跳过的最大字节数8192

抽象类Writer:属于java.io包;实现Appendable, Closeable, Flushable接口

抽象方法(子类必须实现): write(char[], int, int)、flush() 和 close()

可以输出字符int,字符数组char[],和字符串String

Writer append(CharSequence csq)

Writer append(CharSequence csq, int start, int end)

Writer append(char c) 将指定字符序列添加到此 writer

//返回的是类本身,所以可以写成:
writer.append("........").append("........").append(....).append(......);
</pre><pre name="code" class="java">注意:
1.可以看到,InputStream 和 Reader 类中的read方法面对的<span style="font-family: Arial, Helvetica, sans-serif;">分别是字节和字符,</span><span style="font-family: Arial, Helvetica, sans-serif;">但是</span><span style="font-family: Arial, Helvetica, sans-serif;">返回类型都是int。</span>
<span style="white-space:pre">	read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数</span>。然后才可以用-1表示流的结尾。(不会与所读取的数据重复)
<span style="white-space:pre">	</span>然后将数据强转回(byte),就可以得到原始数据。


关于四个接口:Flushable, Closeable,Readable, Appendable 接口略。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: