Java初学者之路--IO流

2021/4/12 12:28:17

本文主要是介绍Java初学者之路--IO流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

IO流的一些整理

文章目录

    • IO流的一些整理
  • 前言
  • 一、什么是IO流?
  • 二、IO流的分类(按数据类型)
    • 1.字节流
    • 2.字符流
    • 3.对象序列化&对象反序列化
  • 总结


前言

对于Java的学习整体而言。IO流是一个比较重要的板块,它对于初学者而言,是将代码与文件实际联合在一起的一种方法,本篇博客主要是我自己学习IO流过程中整理汇总的一些相关知识。


一、什么是IO流?

:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。
IO:输入/输出(Input/Output)
IO流就是我们用来处理设备间数据传输问题的。
常见的应用有文件复制;文件上传;文件下载等;

二、IO流的分类(按数据类型)

1.字节流

字节流主要分为字节输入流和字节输出流
字节流抽象基类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出流的所有类的超类
子类名特点:子类名称都是以其父类名作为子类名的后缀
字节流写数据的步骤
1、创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
2、调用字节输出流对象的写数据方法
3、释放资源(关闭此文件输出流并释放于此相关联的任何系统资源)
字节流读数据的步骤(一次读一个字节数据):
1:创建字节输入流对象
2:调用字节输入流对象的读数据方法
3:释放资源
从上面的总结可以看出,字节流不管是输入还是输出,步骤都是类似的,都是先创建一个流对象,这也是我们Java编程的主要思想,万物皆对象,然后调用读数据或者写数据的方法,注意这里方法不止一种,根据实际需要选择合适的方法,最后一定记得关闭资源,不然系统是不会帮你关闭的。

2.字符流

字符流主要是由于字节流操作中文不是特别方便,所以java提供字符流,而字符流就是由字节流和编码集组成的,与字节流相似,我们一般也将字符流细分为字符输入流和字符输出流
字符流抽象基类
Reader:这个抽象类是表示字符输入流的所有类的超类
Writer:这个抽象类是表示字符输出流的所有类的超类
字符流读写数据的步骤都与字节流类似,不同的地方只是调用的字符流特有的一些方法,这里就不多说了。
对于字节流和字符流而言,我们一般使用时都建议通过缓冲流使用,可以极大减少对电脑系统的负担。

3.对象序列化&对象反序列化

对象序列化:
就是将对象保存到磁盘中,或者在网络中传输对象;
这个机制就是使用一个字节序列表示一个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息字节序列写到文件之后,相当于文件中持久保存了一个对象的信息;
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。
对象的反序列化流:
就是通过特有的方法从对象序列化流ObjectOutputStream中读取对象
对象序列化流的三个问题:
用对象序列化流序列化了一个对象后,加入我们修改了对象所属的类文件,读取数据会不会出问题?
答案:会出问题,抛出InvalidClassException异常。
如果出问题了,如何解决?
答案:给对象所属的类加一个serialVersionUID,例如
private static final long serialVersionUID =42L;
如果一个对象中得到某个成员变量的值不想被序列化,又该如何实现呢?
给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程;

总结

IO流的内容还有很多,比如各种缓冲流,转换流,还有一些实际应用过程中容易遇到的问题等等,这里都不多做赘述了,总的来说,IO流是我们学习Java的一个很重要的阶段,这里学会了你就能感受到用代码影响文件的快乐。



这篇关于Java初学者之路--IO流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程