LInux:它如何处理从文件中间删除内容

标签 linux filesystems

我有两个关于 Linux 文件系统中读取和删除如何工作的问题。我尝试搜索但找不到正确的答案。

1) 随机读取文件中的某个位置:考虑对某个位置执行 lseek 然后从中读取的情况。我期望读取会直接跳转到包含该位置的 block 。文件系统知道文件中有多少个 block 以及每个 block 的大小。通过简单的计算就会知道要去哪个区 block 。这是正确的吗?

2) 从文件中间删除内容:假设一个文件存储了超过 100 个 block 。我们删除第二个 block 中的内容。进行此更改后,第二个 block 未完全填充。这个变化是如何处理的?我们是否通过向上移动第三个 block (以及第四个到第三个等等)来复制整个文件,以便填充所有 block ?这是必需的,以便随机读取更快(如第一点中所述)。

最佳答案

  1. 计算不一定简单;它们取决于文件系统和文件的大小。

  2. 这就是您遭到否决的原因,以及您找不到任何相关答案的原因:无法从文件中间删除。您只能重写文件,使内容更接近开头。

关于LInux:它如何处理从文件中间删除内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074245/

相关文章:

linux - awk中的键值对

ios - NSFileManager Attributesforitem 失败并返回 null

filesystems - 什么是 ext3 中的孤立列表?

java - FileSystem.list 的 JVM 实现

javascript - 从 html 文件夹中的 HTML5 桌面应用程序访问本地文件

python - 在 unix 系统上使用 Python 对文件进行就地排序

linux - 如何使用 bash 命令将文件名列表写入 .lst 文件

linux - Debian 9.4(延伸)将 UART4 波特率更改为 9600

Linux命令列出带数字的文件名?

linux - Grep-ing 同时保持第一行