趁着有時間,看了下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