2010-12-04 33 views
1

我至少需要测试一个文件中的字节范围是真的存在还是无效。它需要在主要的操作系统:Unix(Linux/MacOSX/FreeBSD)和Windows上工作。用于访问稀疏文件的操作系统API?

我想还是没有办法在文件中打洞或者是否有一些文件系统特定的API和提议?这对于日志文件来说也是如此之好。

回答

2

在Windows上,您可以使用FSCTL_GET_RETRIEVAL_POINTERS来查找文件集群和磁盘之间的映射。

相应的Linux(和可能是一些其他posixes)IOCTL是FIBMAP

+0

这是一篇关于FIBMAP的博客文章:http://smackerelofopinion.blogspot.com/2009/06/fibmap-ioctl-file-system-block-number.html – dmeister 2010-12-04 18:57:06

0

我所知,没有可移植的方法来测试稀疏。要创建一个带有孔的文件,您必须在0的孔上覆盖seek(),而不是写入它们。这显然只适用于创建新文件或扩展旧文件。在已有的零上使用seek()将无所作为。