IO类最基本的有四个抽象类,InputStream、OutputStream、Reader、Writer。最基本的方法是read()和write()方法,其他都是这四类流的子类,方法也是通过这两类方法衍生而成。大部分的IO源码都是native标注,源码都是C/C++写的。
1、InputStream
InputStream是定义了一个Java流式字节输入模式的抽象类。该类的所有方法在出错条件下引发IOException异常,它的主要方法如下:
方法 |
方法介绍 |
public int available() |
返回可读的字节数量 |
public int read(byte b[],int off,int len) |
把从第off位置读取len长度字节的数据放到byte数组中 |
public abstract int read() |
读取数据 |
public long skip(long n) |
跳过指定个数的字节 |
public void close() |
关闭流,释放资源 |
public synchronized void reset() |
重置读取位置为上次mark标记的位置 |
public boolean markSupported() |
如果调用的流支付mark()/reset()就返回true |
2、OutputStream
OutputStream定义了一个Java流式字节输出模式的抽象类,该类的所有方法返回一个void值并且在出错的情况下引发一个IOException异常。主要方法如下:
方法 |
方法介绍 |
void write(int b) |
|
void write(byte buffer[]) |
|
void write(byte buffer[],int offset,int numBytes) |
写入数组buffer以buffer[offset] |
void flush() |
刷新缓冲区 |
void close() |
关闭输出流,关闭后的写操作会产生IOException异常 |
3、Reader类
Reader类是Java定义的流式字符输入模式的抽象类。类中的方法在出错时引发IOException异常
方法 |
描述 |
int read() |
如果调用的输入流的下一个字符可读则返回一个整型,遇到文件尾时返回-1 |
int read(char buffer[]) |
从缓冲区中读取字符,返回实际成功读取的字符数,遇到文件尾返回-1 |
abstract int read(char buffer[],int offset,int numChars) |
试图读取buffer中从buffer[offset]开始的numChars个字符,返回实际成功读取的字符数,遇到文件尾返回-1 |
Boolean ready() |
如果下一个输入请求不等待则返回true,否则返回false |
Long skip(long numChars) |
跳过numChars个输入字符,返回跳过的字符数 |
Boolean markSupported() |
判断当前流是否支持标记流 |
void reset() |
重置读取位置为上次mark标记的位置 |
void mark(int numChars) |
在输入流的当前位置设立一个标志。该输入流在numChars个字符被读取之前有效 |
abstract void close() |
关闭输入源,进一步的读取将会产生IOException异常 |
4、Writer类
Writer是定义流式字符输出的抽象类,所有该类的方法都返回一个void值并在出错条件下引发IOException异常。
方法 |
描述 |
void write(char buffer[]) |
向一个输出流写一个完整的字符数组 |
abstract void write(char buffer[],int offset,int numChars) |
向调用的输出流写入数组buffer[offset]为起点的numChars个字符区域的内容 |
abstract void close() |
关闭输出流,关闭后进行写操作会产生IOException异常 |
abstract void flush() |
刷新缓冲区 |
Writer append(CharSequence csq) |
追加一个字符序列 |
Writer append(CharSequence csq,int start,int end) |
追加写入一个字符序列的一部分,从start位置开始,end位置结束 |
Writer append(char c) |
追加写入一个16位的字符 |