爲了方便記憶,特將IO中涉及的類進行整理以下:java
一、File類dom
提供了目錄操做,查看文件屬性等。函數
二、java IO類層次spa
面向字節流的類爲InputStream、OutputStream;面向字符流的類爲Reader、Writerip
能夠使用 InputStreamReader 將 InputStream-->Readerit
能夠使用OutputStreamWriter 將 OutputStream-->Writerio
InputStream --->Readerfunction
|---ByteArrayInputStream --->CharArrayReaderclass
|---StringBufferInputStream(discard) --->StringReaderfile
|---FileInputStream --->FileReader
|---PipedInputStream --->PipedReader
|---FilterInputStream
|---DataInputStream
|---BufferedInputStream --->BufferedReader(has readLine function)
OutputStream --->Writer
|---ByteArrayOutputStream --->CharArrayWriter
|---FileOutputStream --->FileWriter
|---PipedOutputStream --->PipedWriter
|---FilterOutputStream
|---DataOutputStream
|---PrintStream --->PrintWriter
|---BufferedOutputStream --->BufferedWriter
二、一些經常使用的組合
BufferedReader s = new BufferedReader(new FileReader(fileName)); //字符緩衝方式讀取
DataInputStream di = new DataInputStream(new BufferedInputStream(new FileInputStream(filename))); //從文件緩衝讀取數據類型
DataOutputStream outputStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename))); //將數據類型寫入到文件之中,而後能夠經過DataInputStream來讀取
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(filename))); //將文件經過PrintWriter方式格式化寫入
out.println 函數就能夠格式化寫文件內容了。
三、RandomAccessFile類
支持搜尋方法的文件讀寫類,提供給了seek函數
四、標準IO
System.err, System.out 都已經被包裝成了 PrintStream 所以能夠直接使用。
System.in 仍是屬於 InputStream 類型,所以在使用前須要包裝下。
1)按行讀取:BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ///使用了InputStreamReader將System.in表示的InputStream類型轉換成Reader類型。
2)將System.out轉換成PrintWriter:PrintWriter pw = new PrintWriter(System.out,true);
五、重定向IO
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)