我想知道 fseek 如何在 Windows 文件系统上工作。据我所知,一个文件有点像集群的链表(它们可能是恒定大小的),但我不知道 fseek 是否需要读取并跳过这个集群的长链,或者它可能是一些数组集群,所以 fseek 只通过它查找,然后进入正确的集群,而无需阅读以前的集群。有人可以回答吗?
问问题
124 次
1 回答
1
如果您对在 Windows 上的工作方式感到好奇fseek()
,请参阅 Visual Studio 附带的 CRT 源代码。
您会看到它是使用SetFilePointer() API 实现的,它只是适当地调整 FILE_OBJECT ::CurrentByteOffset。
文件系统实现者将此偏移量用于同步(非重叠)读写操作。至于文件系统如何跟踪文件数据(集群/范围),因实现而异。你想解决什么问题?
于 2012-11-17T19:47:42.260 回答