为了方便记忆,特将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)