java.io包中定義了多個流類型(類或抽象類)來實現輸入/輸出功能;能夠從不一樣的角度對其進行分類:java
按數據流的方向不一樣能夠分給輸入流和輸出流。spa
按處理數據單位不一樣能夠分爲字節流和字符流。對象
按照功能不一樣能夠分爲節點流和處理流。blog
|
字節流ip |
字符流內存 |
輸入流ci |
InputStreamit |
Readerio |
輸出流table |
OutputStream |
Write |
節點流爲能夠從一個特定的數據源(節點)讀寫數據(如:文件,內存)
處理流是「鏈接」在已存在的流(節點流或處理流)之上,經過對數據的處理爲程序提供更爲強大的讀寫功能。
類型 |
字符流 |
字節流 |
File(文件) |
FileReader FileWriter |
FileInputStream FileOutputStream |
Memory Array |
CharArrayReader CharArrayWriter |
ByteArrayInputStream ByteArrayOutputStream |
Memory String |
StringReader StringWriter |
|
Pipe(管道) |
PipedReader PipedWriter |
PipedInputStream PipedOutputStream |
處理類型 |
字符流 |
字節流 |
Buffering |
BufferedReader BufferedWriter |
BufferedInputStream BufferedOutputStream |
Filtering |
FilterReader FilterWriter |
FilterInputStream FilterOutputStream |
Converting between bytes and character |
InputStreamReader OutputStreamWriter |
|
Object Serialization |
|
ObjectInputStream ObjectOutputStream |
Data coversion |
|
DataInputStream DataOutputStrearm |
Counting |
LineNumberReadeer |
LineNumberInputStream |
Peeking ahead |
PushbackReader |
PushbackInputStream |
Printing |
PrintWriter |
PrintStream |
serializable 序列化,將一個對象,轉換爲字節流保存到硬盤。
package Test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; public class TestObjectIO { public static void main(String[] args) throws Exception { T t = new T(); t.k = 30; FileOutputStream fos = new FileOutputStream("F:/TestObjectIO.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(t); oos.flush(); oos.close(); FileInputStream fis = new FileInputStream("F:/TestObjectIO.txt"); ObjectInputStream ois = new ObjectInputStream(fis); T a = (T)ois.readObject(); System.out.println(a.i +" " + a.j + " " + a.d + " " + a.k); fos.close(); fis.close(); ois.close(); } } class T implements Serializable { int i = 10; int j = 20; double d = 3.2; //transient 在序列化的時候,不予考慮,也及讀出來以後爲0 transient int k = 15; }