现在的位置: 首页 > 综合 > 正文

Java IO系统详细解析(高度样式化)

2013年07月13日 ⁄ 综合 ⁄ 共 2120字 ⁄ 字号 评论关闭

JavaIO系统是用来进行输入和输出的,Java系统本身提供了非常丰富的类库,利用这些类库几乎可以进行一切的IO操作,但要彻底弄明白这些类的用法和它们之间的关系却并还容易,笔者总结了一些学习Java IO的思路,希望对大家能有帮助。

   InputOutputReadWriteStream的含义

很多时候在Java中使用IO的时候,都是这几个关键字交叉混合使用,一不小心就容易弄迷,要明这四个关键字,就要把握住一点,JavaIO的所有操作就是两类,输入和输出,而所谓的输入、输出都是站在程序的角度而言的。

比如要通过一个程序,往硬盘中写入一个文件,对程序而言,肯定是程序在源源不断的把数据往硬盘上放,对程序而言它是在Output,也就是在往出Write,所以Output总是Write对应,表达的是输出的意思。

反过来,要通过一个程序把内存中的数据取出来,那么程序要做的工作就是源源不断的把内存中的数据往外拿,就要不断的去读,从程序的角度看,是有数据不断的往程序里放,这样就是Input,它在Input的时需要不断的Read,所以Input总是Read对应。

Stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在JavaIO中,所有的Stream都包括InputOutput两种类型。

   Java IO的分类

二.1           IO的分类

所有Java IO都可以分成两类

l  输入流

l  输出流

二.2           对输入输出的分类

所有的输入流、输出流都可以分为字节(输入、输出)流,字符(输入、输出)流,处理字节的主要是(OutputStream/InputStream 系列,处理字符的,主要是(Reader/Write)系列。

二.2.1      面向字节(Byte)的输入流(InputStream系列):

1)       ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用

2)       StringBufferInputStream:把一个String对象作为InputStream

3)       FileInputStream:把一个文件作为InputStream,实现对文件的读取操作

4)       PipedInputStream:实现了pipe的概念,主要在线程中使用

5)       SequenceInputStream:把多个InputStream合并为一个InputStream

二.2.2      面向字节(Byte)的输出流(OutputStream系列):

1)       ByteArrayOutputStream:把信息存入内存中的一个缓冲区中

2)       FileOutputStream:把信息存入文件中

3)       PipedOutputStream:实现了pipe的概念,主要在线程中使用

4)       SequenceOutputStream:把多个OutStream合并为一个OutStream

二.2.3      面向Unicode字符的输入流(Reader系列):

1)       CharArrayReader:与ByteArrayInputStream对应

2)       StringReader:与StringBufferInputStream对应

3)       FileReader:与FileInputStream对应

4)       PipedReader:与PipedInputStream对应

二.2.4      面向Unicode字符的输出流(Write系列):

1)       CharArrayWrite:与ByteArrayOutputStream对应

2)       StringWrite:无与之对应的以字节为导向的stream

3)       FileWrite:与FileOutputStream对应

4)       PipedWrite:与PipedOutputStream对应

二.3           对流进行包装的流(Filter系列)

二.3.1      输入系列:

二.3.1.1         用于包装InputStream的流

1)       DataInputStream:从Stream中读取基本类型(intchar等)数据。

2)       BufferedInputStream:使用缓冲区

3)       LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()setLineNumber(int)

4)       PushbackInputStream:很少用到,一般用于编译器开发

二.3.1.2         用于包装ReaderReader

1)       没有与DataInputStream对应的Reader

2)       BufferedReader:与BufferedInputStream对应

3)       LineNumberReader:与LineNumberInputStream对应

抱歉!评论已关闭.