2010-12-04 76 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()將無所作爲。