一篇文章带你理解Java的IO流

一篇文章带你理解Java的IO流

1,基础概念

IO :input(输入)、output(输出)

内存与存储设备之间的数据传输通道。

2,流的分类

  • 按方向分

输入流:将存储设备中的内容读入到内存中。

输出流:将内存中的内容写到存储设备中。

  • 按单位分

字节流:以字节为单位。

字符流:以字符为单位。

  • 按功能分

节点流:具有实际传输数据的读写功能。

过滤流(装饰类):在节点流的基础上增强功能

形容一个流时:单位 + 方向 + 功能 + 流

3,字节流

3.1 字节流的父类

  • InputStream :字节输入流

主要方法:

1public abstract int read() throws IOException;
	从输入流中读取数据的下一个字节
	
2public abstract int read(byte[] b) throws IOException;
	从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。

3public int readd(byte[] b, int  off , int  len);
	将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数

  • OutputStream :字节输出流

主要方法:

1public abstract void write(int b)throws IOException
	将指定的字节写入此输出流
	
2public void write(byte[] b)throws IOException
	将 b.length 个字节从指定的 byte 数组写入此输出流
	
3public void write(byte[] b,int off,int len)throws IOException:
	将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流

3.2 字节节点流

字节输出节点流:FileOutputStream

字节输入节点流:FileInputStream

3.3 字节过滤流(装饰类)

  • 缓冲流

字节输入缓冲流:BufferedInputStream

字节输出缓冲流:BufferedOutputStream

使用缓冲流的好处:

1,提高IO效率,减少访问磁盘的次数

2,数据存在缓冲区中,flush是将缓冲区的内容写入到文件中,同时清空缓存;也可以直接close,调用close会先使用flush,清空缓存,然后关闭资源。(凡是使用流必须使用close)

在这里插入图片描述

  • 数据流

字节输入数据流:DataInputStream

字节输出数据流:DataOutputStream

数据流可以直接读写8种基本数据类型和String。

  • 对象流

字节输入对象流:ObjectInputStream

字节输出对象流:ObjectOutputStream

使用对象流的好处:

1,增强缓冲区功能。

2,直接读写8种基本数据类型和String

3,增强读写对象

4,读入的对象必须实现serializable接口,进行对象序列化

3.4 对象序列化

对象序列化:将对象转成二进制文件的过程(输出)。

对象反序列化:将序列化过程中生成的二进制码串转换成对象。

对象序列化细节:

1,必须实现serializable接口。
2,必须保证让对象的所有属性序列化。
3,transient修饰属性时,不参与对象序列化。

4,字符流

4.1 字符流的概念

字符流:就是在字节流的基础上,加上编码,形成的数据流。

字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。

4.2 字符输入流:Reader

常用子类:FileReader

文件字符流的常用方法:

1,read();

2,read(char[ ];

3,read(char[ ] ,offset,len);

4.3 字符输出流: Writer

常用子类:文件字符输出流: Filewriter

文件字符输出常用方法:

writer();

writer(char[ ]);

writer(char[ ],offset,len);

writer(string);

flush()刷新缓冲区

注意:close()方法默认调用了flush()方法,但是flush()方法只刷新缓冲区,而close()还会关闭IO流。

5,小结

本篇文章简单介绍了使用Java中的IO流,由于纯手打,难免会有纰漏,如果发现错误的地方,请第一时间告诉我,这将是我进步的一个很重要的环节。

原创文章 59 获赞 287 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_45124488/article/details/103096094