Java - 基础IO

上一篇:操作系统的进程与线程知识补充

1、概念
IO指的是Input/Output,所以IO解决的就是一个输入输出的问题。

2、文件
文件是OS对硬盘上一块数据的抽象。文件是使用树形结构来组织。
OS在管理硬盘数据时,对硬盘上的数据进行了一层抽象——文件系统。
文件是需要被管理的,OS会去描述它,OS在管理文件时,把文件分成两大类——保存的是数据(文件/文本,图片);组织文件之间的关系(文件夹)。

3、 一个点 . 是表示当前结点
一个点 … 是表示当前结点的父结点
反斜杠\是Windows上用来切割结点名称的分隔符
斜杠/是Linux上用来切割结点名单的分隔符

4、 OS 描述一份文件需要两类信息
i) 元信息(额外信息)
文件名
路径(存在哪个文件夹下)
创建日期
谁创建/有什么权限
Ii)内容数据

5、所有IO设备通用的读取/写入数据的方式
I) 因为有不同的设备,所以出现很多不同的IO;
II) 根据冯诺依曼体系,从设备中读取/写入的原生数据一定是二进制形式(字节流)
IO读取数据速度是很慢的,所以次数尽可能的小。

6、读到的数据read()一次只读一个字节
Buf = new byte[3];
Read(buf);一次读3个字节,放到数组中

7、为什么需要有缓冲流?
当我们用resd()读取文件时,没读一个字节,访问一次硬盘,效率很低。文件过大时,操作起来不方便。因此我们需要用到buffer缓存流,当创建buffer对象时,会创建一个缓冲区数组。当我们读一个文件时,先从硬盘中读到缓冲区,然后直接从缓冲区输出即可,效率会更高。

8、字节流与字符流的区别

  • 字节流操作的基本单元是字节,字符流操作的基本单元为Unicode码元。
  • 字节流在操作的时候本身不会用到缓冲区,是与文件本身直接操作的;字符流在操作的时候使用到缓冲区。
  • 所有文件的存储都是字节(byte)的存储,而磁盘上保留的是字节。
  • 在使用字节流操作中,即使没有关闭资源(close方法)也能输出;而字符流不适用close方法的话,不会输出任何内容。

9、什么是序列化和反序列化?
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

什么时候需要序列化?

  • 把内存中的对象状态保存到一个文件中或者数据库中的时候;
  • 用套接字在网络上传送对象的时候。

10、一个序列如果想被序列化,那么需要实现一个Serializable接口。
类中的静态变量的值是不会被序列化的,transient修饰的属性不会被序列化。
在实现Serializable接口的时候,一定要给serialVersionUID赋值,最好设置为1L,这个L最好大写来区分,不然小写看起来像数字1,不同的serialVersionUID值会影响到反序列化。


下一篇:网络原理之初识

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值