io 2.0 IO流介绍

先了解下文件系统

在这里插入图片描述
Linux 使用的是ext4文件系统,会把分区主要分为两大部分(暂时不提超级块):一小部分用于保存文件的inode(i节点)信息;剩余的大部分用于保存block信息。

inode的默认大小为128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的block编号。

每个文件需要占用一个inode。大家如果仔细查看,就会发现inode中是不记录文件名的,那是因为文件名记录在文件所在目录的block中。

block的大小可以是1KB、2KB、4KB,默认为4KB。block用于实际的数据存储,如果一个block放不下数据,则可以占用多个block。例如,有一个10KB的文件需要存储,则会占用3个block,虽然最后一个block不能占满,但也不能再放入其他文件的数据。这3个block有可能是连续的,也有可能是分散的。

小结:

A 目录,B 目录,C 文件(Linux 没有目录的概念,他认为一切都是文件,但我们为了区分,就叫目录和文件了)A 目录中有B 目录和C文件。

A 的文件信息在 A inode中,A 的文件内容在 A block 中。这个A block 中有什么呢,他可是目录,他会有B 目录的 B inode 信息,有 C文件的 C inode 信息,至于B 目录的内容和 C 文件的内容都在他们各自的 block 中。

IO 流

由于以上原因,所以对文件的增加,删除,移动都是在他的 inode 所在的那个 block 中操作。而对文件内容的修改在自己的 block 中操作。
所以 linux 中 有专门的 vi、vim 命令操作文件内容。
而 java 中对文件内容的操作则是通过 输入、输出流。

以上输入源输出源是文件。

Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源。

stream是从起源(source)到接收(sink)的有序数据。
Java把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入/输出功能。

提示: 因为Java提供了这种IO流的抽象,所以开发者可以使用一致的IO代码去读写不同的IO流节点。

思考

现实生活中的车流,水流 都是流,建立一个管道,从一个存储区沿着管道转到另一个存储区。

上一节:File 类
下一节:流的分类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值