黑马程序员技术交流社区

标题: IO技术再总结 [打印本页]

作者: 施大勇    时间: 2013-9-28 14:55
标题: IO技术再总结

/*
JAVA的IO技术再总结,因为之前对各个类作过体系的总结,但是在使用中还是不太清楚什么时候用什么类来操作,
所以这次总结重在各个类的独特的地方,即它与其它类的区别:
IO流技术按操作的内容不同,可分为字节流(InputStream,OutputStream),字符流(Reader,Writer),字节流操作字节(像图片,影音),而字符流操作

文本。
按操作的方式,可以分为输入流(InputStream,Reader),输出流(OutputStream,Writer),输入流以读取为主,可以从多种渠道获取源,输出流,可以

将数据输出到多种去处。
输入流的构造方法中的参数为其指定了数据源,主要的方法就是读read(),其有多种重载形式,可以将数据从源读取到一个我们指定的中转站(可以是

一个字节,一个字符,或字节数组和字符数组)。
输出流的构造方法中的参数为其指定了目的地,主要的方法就是写write(),其有多种重载形式,可以把方法中的参数(一般是输入流读取到中转站的数

据)写到构造方法中的参数中去。
这样来看,流程是这样的:输入流(构造方法中的参数作为源)---〉read()---〉读到中转站(我们指定的,一般为数组)---〉write()---

〉输出流(构造方法中的参数指定的目的地)。
输入流读还有一些方法可以用来操作读取的位置,skip(),reset(),输出流一般带有刷新新的功能。


上面的四个接口是基本,但是读写字节或字符满足不了要求,于是它们有了很多的子类:各个子类可以从其名上分析它的功能,以知道类的作用。
Buffered后可以加四个基本接口名,它主要对接口中基本功能进行增强,对接口及其子类进行凶装,方便操作。
Data数据操作,对于其本数据类型的读写,四个基本接口中的方法显然操作不方便,数据操作类提供对基本数据的简单快速操作。
Object对象,主要操作对象的。
File操作文件的。
ByteArray内存操作,一般用于操作临时数据。这里ByteArrayOutputStream 是最特殊的,它的构造 方法不指定目的,它本身就是目的,通过write(

数据)方法将数据写入自身,通过方法toString()返回字符串。
Piped管道流,用于线程间的通信,PipedOutputStream 通过方法connect(PipedInputStream snk)连接PipedInputStream.
Print打印流用于输出数据,它的特点是在构造函数时,可以指定为自定义刷新,这样在输出时,就不用再写flush()了,这里的PrintWriter比较特殊

,其构造参数可以为字节流,也可以为字符流。

最重要的两个流为转换流:InputStreamReader,OutputStreamWriter,前者将字节流转换成字符流,这样就可以以字符流的操作形式读取数据,后者将

字符流转换成字节流,因为最终的写入操作是通过字节完成的。


输入流的读操作是一个阻塞式方法,当没有结束标记时会一直等待,程序会在这里不向下执行,所 以在操作时一定要给数据后加入结束标记。
输出流的写操作一定要进行刷新(字符流),同时BufferedWriter类还提供了newLine()方法可以向数据尾部写上一个行结束标记。
由其是在net编程时要注意数据的写与读。

Scanner是专门用于数据输入的工具类,其提供了useDelimimer()方法用于设置输入数据的分隔符。




*/






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2