java进阶(33)--IO流





https://www.cnblogs.com/mrwhite2020/p/14322392.html


https://www.cnblogs.com/mrwhite2020/p/14322446.html


https://www.cnblogs.com/mrwhite2020/p/14322463.html

 ------------------------------------------分割线,以下为正文-------------------------------------------------

一、IO流概念:

1、基本概念

I:Input

O:Output

通过IO可以完成硬盘文件的读和写。

2、IO流分类

(1)按照流的方向分类:

输入流(Input)或者称为读(Reader)

输出流(Output)或者称为写(Write)

(2)按照读取数据方式不同分类:

字节流:按照字节方式读取数据,一次读取1个字节byte,等同一个8个二进制位,这种流是万能的,什么类型的文件都可以读取,包括:文本文件、图片、视频、声音等

字符流:按照字符方式读取数据,一次读取一个字符,这种流是为了方便读取普通文件而存在,这种流不能读取图片、声音、视频、word等,只能读取纯文本文件。

假设文件test.txt 内容为:"h世界"

字节流读取:第一次读'h'(占用一个字节),第二次读'世'字符的一半(占用一个字节)

字符流读取:第一次读'h'(占用一个字节),第二次读'世'字符(占用一个字符)

3、java.io流的四大家族

(1)java.io.InputStream字节输入流

(2)java.io.OutputStream字节输出流

(3)java.io.Reader字符输入流

(4)java.io.Writer字符输出流

在java中以Stream结尾都是字节流,以Reader/Writer结尾都是字符流

 4、流的close和flush方法

(1)close()

所有的流都实现java.io.closeble接口,都是可以关闭的,都右close方法。

流是一个管理,是内存与硬盘之间的通道,用完之后一定要关闭,不然会耗费很多资源,养成好习惯,用完流一定要关闭。

(2)flush()

所有的输出流都实现了java.io.Flushable接口,都可以刷新,都包含flush方法。

养成好习惯,输出流输出玩都需要flush刷新一下,表示将通道/管道当中的剩余未输出的数据强行输出完,即清空管道,没有使用flush方法会导致数据丢失

5、java.io下常用的16个流

(1)文件专属:

java.io.FileInputStream;
java.io.FileOutputStream;
java.io.FileReader;
java.io.FileWriter;

(2)转换流:字节流转为字符流

java.io.InputStream;
java.io.OutputStream;

(3)缓冲区专属:

java.io.BufferedInputStream;
java.io.BufferedOutputStream;
java.io.BufferedReader;
java.io.BufferedWriter;

(4)数据专属:

java.io.DataInputStream;
java.io.DataOutputStream;

(5)标准输出流:

java.io.PrintStream;
java.io.PrintWriter;

(6)对象专属:

java.io.ObjectInputStream;
java.io.ObjectOutputStream;

 

二、FileInputStream字节输入流

1、FileInputStream完成字节流输入的流程

(1)准备文件如下:

java进阶(33)--IO流

(2)创建字节流输入对象,Idea自动将路径变斜杠

java进阶(33)--IO流

 (3)alt+回车添加try+catch或者上报异常,这里选择try+catch

java进阶(33)--IO流

 (4)第二种文件路径编写方式"\"与"//"等价

java进阶(33)--IO流

 (5)增加finally语句且初始化流放在try+catch语句外,并添加流的关闭,流关闭前需要增加流的判空ifn可默认生成 if(fis==null)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppfsd.html