Java IO流-- JAVA流式输入/输出原理 & 输入输出流分类 & 节点流和处理流 & IO流总结
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流-- JAVA流式输入/输出原理 & 输入输出流分类 & 节点流和处理流 & IO流总结相关的知识,希望对你有一定的参考价值。
1. JAVA流式输入/输出原理
- 在Java程序中,对于数据的输入/输出操作以“流”(Stream)方式进行;Java提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据。
读入写出
- 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的。怎么把文件里面的数据读出来呢?你可以把文件想象成一个小桶,文件就是一个桶,文件里面的数据就相当于是这个桶里面的水,那么我们怎么从这个桶里面取水呢,也就是怎么从这个文件读取数据呢。
- 常见的取水的办法是我们用一根管道插到桶上面,然后在管道的另一边打开水龙头,桶里面的水就开始哗啦哗啦地从水龙头里流出来了,桶里面的水是通过这根管道流出来的,因此这根管道就叫流,JAVA里面的流式输入/输出跟水流的原理一模一样,当你要从文件读取数据的时候,一根管道插到文件里面去,然后文件里面的数据就顺着管道流出来,这时你在管道的另一头就可以读取到从文件流出来的各种各样的数据了。当你要往文件写入数据时,也是通过一根管道,让要写入的数据通过这根管道哗啦哗啦地流进文件里面去。除了从文件去取数据以外,还可以通过网络,比如用一根管道把我和你的机子连接起来,我说一句话,通过这个管道流进你的机子里面,你马上就可以看得到,而你说一句话,通过这根管道流到我的机子里面,我也马上就可以看到。有的时候,一根管道不够用,比方说这根管道流过来的水有一些杂质,我们就可以在这个根管道的外面再包一层管道,把杂质给过滤掉。从程序的角度来讲,从计算机读取到的原始数据肯定都是01010101这种形式的,一个字节一个字节地往外读,当你这样读的时候你觉得这样的方法不合适,没关系,你再在这根管道的外面再包一层比较强大的管道,这个管道可以把01010101帮你转换成字符串。这样你使用程序读取数据时读到的就不再是01010101这种形式的数据了,而是一些可以看得懂的字符串了。
2. 输入输出流分类
Java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:
- 按数据流的方向不同可以分为输入流和输出流
- 按照处理数据单位不同可以分为字节流和字符流
- 按照功能不同可以分为节点流和处理流
我们来理解两个概念:
- 字节流:最原始的一个流,读出来的数据就是01010101这种最底层的数据表示形式,只不过它是按照字节来读的,一个字节(Byte)是8位(bit)读的时候不是一个位一个位的来读,而是一个字节一个字节来读。
- 字符流:字符流是一个字符一个字符地往外读取数据。一个字符是2个字节
Java所提供的所有流类型位于包 Java.io内,都分别继承自以下四种抽象流类型。
- 输入流:InputStream(字节流),Reader(字符流)
- 输出流:OutPutStream(字节流),Writer(字符流)
- 这四个类都是抽象类,可以把这四个类想象成四根不同的管道。一端接着你的程序,另一端接着数据源,你可以通过输出管道从数据源里面往外读数据,也可以通过输入管道往数据源里面输入数据,总之,通过这四根管道可以让数据流进来和流出去。io包里面定义了所有的流,所以一说流指的就是io包里面的
什么叫输入流?什么叫输出流?
用一根管道一端插进文件里,一端插进程序里面,然后开始读数据,那么这是输入还是输出呢?
- 如果站在文件的角度上,这叫输出。
- 如果站在程序的角度上,这叫输入。
- 记住,以后说输入流和输出流都是站在程序的角度上来说。
3. 节点流和处理流
- 你要是对原始的流不满意,你可以在这根管道外面再套其它的管道,套在其它管道之上的流叫处理流。为什么需要处理流呢?这就跟水流里面有杂质,你要过滤它,你可以再套一层管道过滤这些杂质一样。
3.1 节点流类型
3.2 处理流类型
处理流是包在别的流上面的流,相当于是包到别的管道上面的管道。
4. IO流总结
以上是关于Java IO流-- JAVA流式输入/输出原理 & 输入输出流分类 & 节点流和处理流 & IO流总结的主要内容,如果未能解决你的问题,请参考以下文章