最近写代码时,写到很多和IO相关的东西,由于每次写的时候都是编翻书边学,顺便在网上找点现成的就直接用了。所以每次要写的时候都要废点周折,甚至写完了之后对于IO还不是很清楚。所以决定把java IO这部分好好复习下。
这一篇就写点刚看的IO基础东西吧。
java的API文档里,对java.io包的描述是:Provides for system input and output through data streams, serialization and the file system.
那么就先说下什么是“流”:流是java内存中的一组有序数据序列。java将数据从源(文件、内存、键盘、网络等)读入到内存中,形成流。然后还可以将这些流写入到另外的目的地(同样是文件、内存、控制台、网络等)。所以说,java的IO操作都是基于流来完成的。
流可以分为输入流/输出流、字节流/字符流,这些比较简单,就不多说了。另外,按照功能的不同,还可以分为节点流/处理流:节点流是指从一个源直接读写数据的流(这个流没有经过装饰),比如FileInputStream就是一个直接从文件读取字节的流,这就是一个节点流;处理流可以对节点流进行封装,比如BufferedInputStream就可以对FileInputStream进行封装,然后就具有了缓冲功能。
举个例子,比如我们要从文件中读取数据,可以用FileInputStream这么写
FileInputStream fis = new FileInputStream("text.txt");
但是直接这样读取,只能一个字节一个字节的读,如果想给这个输入流加个缓冲,将数据先全部放入到缓冲区中,可以这么写:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("text.txt"));
甚至可以给这一层再加上一个封装
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("text.txt")));
DataInputStream可以用来读取java原生的数据(具体是啥也不清楚,等下一片再讲)。
所有使用处理流封装节点流的功能都使用了decorator设计模式(其实java.io就是使用decorator模式组织的),decorator模式的目的是在不改变任何原有的类的基础上,添加新的功能。具体Decorator设计模式是什么样子的,接下来的篇幅会详细的讲解。
今天就这样,梳理下基本概念,接下来会针对java.io的重要类进行梳理,并提供一些例子。
分享到:
相关推荐
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
Java教程之javaIO详解Java教程之javaIO详解Java教程之javaIO详解
IO流 javaio java 流
1、Java IO_NIO 2、Java+IO.pdf
java io 结构图java io 结构图
IO 简介,只看这篇,IO全部搞定,对于初学者来说,不可多得
JAVA课件Java IO.ppt详细了解JAVA
javaIO流javaIO流
java IO文档java IO文档java IO文档java IO文档java IO文档java IO文档
第8章JavaIO第8章JavaIO第8章JavaIO
java io.pdf java io.pdf
java io处理 方法java io处理 方法
java IO流精讲 JAVA IO流实例开发
java IO操作详细解释 清华大学java io专用教材
Java io流的总结
java io 文件读写
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理
java IO(下)
Java IO流详解
java学习笔记1(java io/nio)设计模式