【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
JDK中的InputStream/OutputStream构成了IO输入输出继承层次的基础。它们都是面向字节序列的,每次可以从序列中读入或者写出一个字节或者指定大小的字节数组。但是面向字节流的输入输出不便于处理Unicode形式存储的信息,所以针对处理字符Unicode专门设计了抽象类Reader/Writer,它们的输出输入操作都是基于两个字节的Char值。而不是一个byte。
读写字节
首先是InputStream/OutputStream,面向字节流的IO操作。
方法 | 描述 |
---|---|
int read() | 从字节流中读入一个字节,并返回该字节,到达文件末尾时返回-1. |
int read(byte[] b) | 总字节流中读入一个字节数组,并返回之际读入的字节大小,结束返回-1 |
int read(byte[]b, int off, int len) | 同上,off指定第一个读入的字节在b中偏移,len表示一次读入的大小 |
long skip(long n) | 跳过n个字节,返回实际跳过的字节大小 |
int avalilable() | 在不阻塞的情况下返回序列中可用的字节数 |
void close() | 关闭输入资源流 |
void mark() | 和reset()配合使用,在输入流的当前位置打一个标记 |
void reset() | 和mark配合使用,返回最后一个标记,返回后的读入将重新读入mark后的字节,没有标记时不返回 |
blloean markSupported() | 查看这个流是否支持打标记 |
方法 | 描述 |
---|---|
void write(int n) | 写入一个字节的数据 |
void write(byte[] b, int off, int len) | 同上,但从字节数组中写入指定大小的字节 |
void flush() | 冲刷缓冲区 |
void close() | 关闭输出流 |
字节流家族
字符流家族
附加接口
- Readable只要一个方法read(CharBuffer),CharBuffer可以随机地读写文件,表示内存中的一个缓冲区。
- Appendable有两个添加单个字符或者字符序列的方法, Appendable append(CharSequence csq),CharSequence描述了一个Char值序列的基本属性。String,StringBuffer,CharBuffer都实现了CharSequence.
- Closeable 只有一个关闭资源的close方法
- Flushable 只有一个冲刷缓冲区的方法flush().