新闻正文
[java.io]关于java.io包中主要类的结构和简单说明
来源:JAVA天堂
JAVA学习者
2007-7-12 01:56:28
网友评论 0 条
字体:[
大
中
小]
~我要投稿!
浙江大学海纳百川 (Sat Apr 26 21:31:40 2003)
转信站: SJTU!news.neu.edu.cn!news.tiaozhan.com!news.happynet.org!ZJUBBS
初学java的io流时,按着教科书的步骤一个一个类的了解,往往会被其中许多的类搞得
头晕,理不清各个类的关系。鉴于这种情况,我认为先了解java.io包结构,从大体上了
解这些各个类的来源和作用,再各个深入了解,会有事半功倍的效果。
从大处来讲,io类按编码方式来分用字节流和字符流两类;如果按形式来分,
有输出流和输入流之分。
流的称呼其实是现实生活中类似水等流体运动的形象描述,所以有输入输出的区别,
所以有流动介质的是什么的区别。
这样就可以给java中的io类给个形象的说明了:字节流和字符流可以想象成流动着的介
质的区别;输出流和输入流自然不用我在此做比喻了,^_^^_^ 不过,java的输出流
特指“内存”到“其他介质”的流动方向,而输入流正好相反。
基本的io流主要是java.io.OutputStream,java.io.InputStream,Writer,Reader
这几个。既然是流,那当然就可以进行处理了。从一个角度(即类的产生)来说,
一个输出的流,如果想是让它联到文件的,那就从OutputStream扩展出来了
FileOutputStream类。从另一个角度(即使用的角度)来说,如果一个
FileOutputStream类想给它加一个缓冲的话,那就有
BufferedOutputStream bufferOut = new BufferedOutputStream( new FileOut
putStream("data.txt") )这种形式。
好了,可以说说io包的结构了:
class java.lang.Object
|
|—class java.io.InputStream //输入流,字节形式,为以下的基类
| |
| |——ByteArrayInputStream //从字节数组中读取
| |
| |——FileInputStream //从文件中读取数据
| |
| |—— FilterInputStream //过滤流的基类,
| | | // 过滤可以了解为各种处理技术的形象称呼
| | |
| | |——BufferedInputStream //缓冲技术,
| | | // 数据来自底层输入流
| | |
| | |——DataInputStream //可读java数据类型
| | |
| | |——PushbackInputStream //缓冲技术,
| | | // 数据来自任意输入流
| | |
| | |——java.util.zip.GZIPInputStream
| | | //不是java.io包中的流。压缩技术
| | |
| | |——java.security.DigestInputStream
| | | //不是java.io包中的流。处理流的摘要
| | |
| | |—— .......
| |
| |——SequenceInputStream //可以将多个输入流进行连接
| |
| |——PipedInputStream //用于读取PipedOutputStream流
| | 的数据
| |—— .......
啊呀,说着说着有些类了,真是有点没有耐心呀,对于OutputStream ,
Writer,Reader类以及一些子类,结构图,大家可以看看下面的网址:
http://java.sun.com/j2se/1.4.1/docs/api/java/io/package-tree.html哈哈,我想大家都有举一反三的本领,理解它们应该不难。
不过,有一点在这里应该提一提:从字节流向字符流转化中Reader的
子类InputStreamReader和Writer的OutputStreamReader起着重要的作用。
收藏到ViVi 收藏此页到365Key
上一篇:
不错的技术文章站点 下一篇:
如何响应鼠标右键?