JAVA - IO包的学习引导文章
2007-04-22 10:54
453 查看
什么是IO
--------------------------------------------------------------------------------
IO(Input/Output)是计算机输出/输出的接口。Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO。关于NIO我们在后面还有专门的讨论。
流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。
Java IO模型
--------------------------------------------------------------------------------
Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。
Java的IO体系分Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码。基本上,所有的IO类都是配对的,即有XxxInput就有一个对应的XxxOutput。
Java IO教程
--------------------------------------------------------------------------------
如果您对Decorator模式非常了解,就能轻易地看出Java的IO类结构:根接口是InputStream/OutputStream,充当数据源的IO类有FileInputStream/FileOutputStream,ByteArrayInputStream/ByteArrayOutputStream等,充当装饰功能的IO类有BufferedInputStream/BufferedOutputStream,DataInputStream/DataOutputStream等,它们都是继承装饰接口FilterInputStream/FilterOutputStream。使用IO时,首先创建一个数据源IO,然后根据需要的功能创建装饰类IO,其构造函数的参数为已创建的数据源IO。我们以创建一个具有缓冲的文件输入流为例,假定需要从磁盘读取文件“C:/log.txt”:
// 创建一个FileInputStream:
FileInputStream fileInput = new FileInputStream("C://log.txt");
// 创建一个BufferedInputStream:
BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
// 现在得到的bufferedInput即是具有缓冲的文件输入流
或者进一步简写如下:
InputStream input = new BufferedInputStream(
new FileInputStream("C://log.txt"));
// 现在得到的input即是具有缓冲的文件输入流
在您对Java的IO有了总体了解后,我们推荐您看看教程Introduction to Java I/O和I/O: Reading and Writing。
Java NIO编程
--------------------------------------------------------------------------------
NIO提供了对块IO的支持,使用块IO的好处是效率更高,而且Java的NIO将直接调用操作系统提供的许多高级IO接口,支持块传输,读写锁定,异步IO等功能,效率非常高。NIO的编程模型是通道和缓冲区,推荐您阅读Getting started with new I/O(中文)。
--------------------------------------------------------------------------------
IO(Input/Output)是计算机输出/输出的接口。Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO。关于NIO我们在后面还有专门的讨论。
流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。
Java IO模型
--------------------------------------------------------------------------------
Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。
Java的IO体系分Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码。基本上,所有的IO类都是配对的,即有XxxInput就有一个对应的XxxOutput。
Java IO教程
--------------------------------------------------------------------------------
如果您对Decorator模式非常了解,就能轻易地看出Java的IO类结构:根接口是InputStream/OutputStream,充当数据源的IO类有FileInputStream/FileOutputStream,ByteArrayInputStream/ByteArrayOutputStream等,充当装饰功能的IO类有BufferedInputStream/BufferedOutputStream,DataInputStream/DataOutputStream等,它们都是继承装饰接口FilterInputStream/FilterOutputStream。使用IO时,首先创建一个数据源IO,然后根据需要的功能创建装饰类IO,其构造函数的参数为已创建的数据源IO。我们以创建一个具有缓冲的文件输入流为例,假定需要从磁盘读取文件“C:/log.txt”:
// 创建一个FileInputStream:
FileInputStream fileInput = new FileInputStream("C://log.txt");
// 创建一个BufferedInputStream:
BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
// 现在得到的bufferedInput即是具有缓冲的文件输入流
或者进一步简写如下:
InputStream input = new BufferedInputStream(
new FileInputStream("C://log.txt"));
// 现在得到的input即是具有缓冲的文件输入流
在您对Java的IO有了总体了解后,我们推荐您看看教程Introduction to Java I/O和I/O: Reading and Writing。
Java NIO编程
--------------------------------------------------------------------------------
NIO提供了对块IO的支持,使用块IO的好处是效率更高,而且Java的NIO将直接调用操作系统提供的许多高级IO接口,支持块传输,读写锁定,异步IO等功能,效率非常高。NIO的编程模型是通道和缓冲区,推荐您阅读Getting started with new I/O(中文)。
相关文章推荐
- JAVA - IO包的学习引导文章(摘抄)
- JAVA - IO包的学习引导文章(摘抄)
- 学习Java IO 流找到的几个比较好的文章
- 我的Java开发学习之旅------>Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法
- Java I/O学习笔记(1),同步阻塞式IO
- java基础-用IO演示文件的复制过程(学习笔记)
- java IO 学习笔记
- JAVA IO学习记录
- JAVA IO源码学习系列之ByteArrayInputStream
- 黑马程序员—java基础学习--IO ( Input Output )流(一)
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- java学习笔记IO输入与输出——常用工具类(1)
- 黑马程序员-java学习笔记-IO
- Java IO学习笔记:概念与原理
- java基础学习心得——字节流读取文章的3种方法
- JavaIO学习
- java学习-IO(Files)
- Java IO学习笔记(五):内存操作流
- 【黑马程序员】javaIO学习和总结
- 学习实例.文章管理.文章类.Article.java