`
阅读更多
什么是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(中文)。
分享到:
评论

相关推荐

    Java IO 编程集合

    收集了Java IO 文件读写等操作的实例

    Java-Java IO编程教程

    Java IO编程教程 资源为视频教程资源 希望对你的 Java 学习有所帮助。

    java IO 编程实例

    import java.io.FileNotFoundException; import java.io.FileReader; public class TestFileReader { public static void main(String[] args) { int c = 0; FileReader freader = null; try { freader...

    java io案例

    io流案例 代码解析

    Java SE编程入门教程 java IO(共28页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java学习书目(各学习阶段都有推荐)

    《O’reilly-Java IO》- 推荐* (包含Java IO编程的各个方面) 《O’reilly-Database Programming with JDBC》- 推荐* (JDBC编程) 《O’reilly-Java Programming with Oracle JDBC》- 参考* 三、Java Web编程 ...

    javaIO流编程.pdf

    javaIO流编程.pdf

    第一行代码Java源代码第11章课程代码JavaIO编

    第一行代码Java源代码第11章【课程代码】JavaIO编程共20页.pdf.zip

    Java SE编程入门教程 java网络编程(共29页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java编程100个实例

    实用的Java编程实例,对于学习Java和面对Java考试有很大的作用,其中包括Java面向对象、Java IO编程、Java网络编程、Java线程、Java手机开发、用Java写自己的浏览器。。。。等等各种源码实例

    Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java判断循环(共79页).ppt

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    java网络编程

    java网络编程包括socket tcp/udp io/nio讲解 http协议 jdbc rmi java的安全框架等知识

    JAVA程序设计:第14章 Java流式IO编程.ppt

    JAVA程序设计:第14章 Java流式IO编程.ppt

    java_io详解

    关于java io技术的详解:IO(Input/Output)是计算机输出/输出的接口。Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入...块IO效率很高,但编程比较复杂。

    Java SE编程入门教程 java正则(共8页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java数组(共33页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

    Java SE编程入门教程 java线程(共61页).pptx

    Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程...

Global site tag (gtag.js) - Google Analytics