Java I/O

匿名 (未验证) 提交于 2019-12-02 21:40:30
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huoguang_/article/details/90342640

Java本身不包含I/O流,而是通过Java API提供的java.io包完成I/O。

为了读取或输出数据,Java程序与数据发送者或接收者之间要建立一个数据通道,这个数据通道被抽象成为---流。

按照流操作的数据单元划分,流可分为字节流和字符流。

  1. 字节流:以字节为基本单元进行数据I/O,可用于二进制数据的读写
  2. 字符流:以字符为基本单元进行数据I/O,可用于文本数据的读写

常用的I/O流类

(1)文件流:

FileInputStream类/FileOutputStream类(常用于读写二进制,如图片)

FileRead类/FileWriter类(常用于读写文本文件)

(2)数据流:

DataInputStream类/DataOutputStream类

(3)缓存流:

(4)InputStreamReader/OutputStreamWriter

(5)PrintStream/PrintWriter

(6)标准输入/输出:System.in/System.out

对象序列化

对象序列化是指将对象写入字节流以实现对象的持久性,在需要时又可以从字节流中恢复该对象的过程(反序列化)。

对象序列化的主要任务是将对象的状态信息以二进制流的形式输出。

Serializable是一个空接口,他的目的只是标识一个类的对象可以被序列化。如果一个类是可序列化的,则它的子类也是可序列化的。

可序列化类中的属性serialVersionUID用于标识类的序列化版本,如果不显式定义该属性,JVM会根据类的相关信息计算它的值,而类修改后的计算结果与类修改前的计算结果往往不同,这样反序列化就会因类版本不兼容而失败。

一个类如果自身实现了Serializable接口,即使其父类没有实现Serizlizable接口,它的对象仍然可以被序列化。

文章来源: https://blog.csdn.net/huoguang_/article/details/90342640
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!