0

我想知道 fseek 如何在 Windows 文件系统上工作。据我所知,一个文件有点像集群的链表(它们可能是恒定大小的),但我不知道 fseek 是否需要读取并跳过这个集群的长链,或者它可能是一些数组集群,所以 fseek 只通过它查找,然后进入正确的集群,而无需阅读以前的集群。有人可以回答吗?

4

1 回答 1

1

如果您对在 Windows 上的工作方式感到好奇fseek(),请参阅 Visual Studio 附带的 CRT 源代码。

您会看到它是使用SetFilePointer() API 实现的,它只是适当地调整 FILE_OBJECT ::CurrentByteOffset。

文件系统实现者将此偏移量用于同步(非重叠)读写操作。至于文件系统如何跟踪文件数据(集群/范围),因实现而异。你想解决什么问题?

于 2012-11-17T19:47:42.260 回答