趁着有时间,看了下JDK1.7 API 对Java.lang.io包下常常用到的Java IO处理类作了一些总结性的东西,但愿能对Java开发者有点用。java
所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较普遍,包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,全部数据被串行化写入输出流,或者从输入流读入。数组
在java io的称呼中,咱们常常会提到“输入流”、“输出流”等等概念。首先,什么是流呢?
所谓“流”,就是一种抽象的数据的总称,它的本质是可以进行传输。
a) 按照“流”的数据流向,能够将其化分为:输入流和输出流。
b) 按照“流”中处理数据的单位,能够将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。并且,须要注意的是,java的字节是有符号类型,而字符是无符号类型!架构
固然这还有些不完整,Serializable接口还未给出,这里只先讨论Java IO经常使用类,稍后讨论serializable。函数
咱们将按照不一样的类来详细讲述各个类的功能及其实现原理。spa
InputStream类是全部字节输入流的超类,其函数类表以下:code
// 构造函数 InputStream() int available() void close() void mark(int readlimit) boolean markSupported() int read(byte[] buffer) abstract int read() int read(byte[] buffer, int offset, int length) synchronized void reset() long skip(long byteCount)
全部继承了InputStream的子类都具备此类方法。继承
OutputStrem类是全部字节输出流的超累,其代码列表以下:接口
package java.io; public abstract class OutputStream implements Closeable, Flushable { // 将字节b写入到“输出流”中。 // 它在子类中实现! public abstract void write(int b) throws IOException; // 写入字节数组b到“字节数组输出流”中。 public void write(byte b[]) throws IOException { write(b, 0, b.length); } // 写入字节数组b到“字节数组输出流”中,而且off是“数组b的起始位置”,len是写入的长度 public void write(byte b[], int off, int len) throws IOException { if (b == null) { throw new NullPointerException(); } else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return; } for (int i = 0 ; i < len ; i++) { write(b[off + i]); } } public void flush() throws IOException { } public void close() throws IOException { } }
(等其余博文写完,再来补充)ip