我有两个关于 Linux 文件系统中读取和删除如何工作的问题。我尝试搜索但找不到正确的答案。
1) 随机读取文件中的某个位置:考虑对某个位置执行 lseek 然后从中读取的情况。我期望读取会直接跳转到包含该位置的 block 。文件系统知道文件中有多少个 block 以及每个 block 的大小。通过简单的计算就会知道要去哪个区 block 。这是正确的吗?
2) 从文件中间删除内容:假设一个文件存储了超过 100 个 block 。我们删除第二个 block 中的内容。进行此更改后,第二个 block 未完全填充。这个变化是如何处理的?我们是否通过向上移动第三个 block (以及第四个到第三个等等)来复制整个文件,以便填充所有 block ?这是必需的,以便随机读取更快(如第一点中所述)。
最佳答案
计算不一定简单;它们取决于文件系统和文件的大小。
这就是您遭到否决的原因,以及您找不到任何相关答案的原因:您无法从文件中间删除。您只能重写文件,使内容更接近开头。
关于LInux:它如何处理从文件中间删除内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074245/