从特定位置打开文件?

0 files

我想知道,如果你有一个特别大的文件,比如 64 MB,是否可以找出文件的物理硬盘位置,然后从特定偏移量读取字节到文件中?

假设我对从文件开头偏移 60 MB 的 100 个字节感兴趣。如果我使用了一些应用程序级别的 seek() 函数,我不希望从文件的开头到文件的结尾需要数百次磁盘搜索的低效率。

有解决办法吗?

非常感谢!

Gil*_*il' 5

你似乎对seek()行为方式有误解。它会尽可能高效地定位此偏移量处的数据存储位置,而不读取中间字节。将有一些搜索(可能不是数百个)来遍历块索引。

你不能做的是保存从文件打开到下一次的块索引的遍历。操作系统必须记住该文件自上次打开后没有被修改或重新定位,这需要记住大量数据以获得非常小的潜在收益。

请注意,文件的内容通常不在连续的磁盘位置中。文件往往是碎片化的。文件系统通常会尝试减少碎片,但这通常无法保证。