2011-11-11 32 views
2

有沒有辦法通過標準Java File API訪問分配給文件的塊數?甚至可以用一些不支持的未公開的API來做到這一點。任何要避免本地代碼插件。分配給稀疏文件的塊數

我談論的的st_blocks 結構統計領域的FSTAT/STAT系統調用在Unix系統。

我想要做的是創建一個文件的稀疏副本,該副本現在有大量冗餘數據,即創建一個新副本,只包含活動數據但只是稀疏地寫入它。然後用原子重命名/鏈接操作交換這兩個文件。但我需要一種方法來查明事先分配給文件的塊數,它可能已經被稀疏地複製了。舊文件然後被刪除。

這將用於釋放100%Java數據庫應用程序中的磁盤空間。依靠文件系統中稀疏文件支持的好處是,我不必更改指出數據位置的索引,這增加了手頭任務的複雜性。

我想我可以通過依靠文件時間戳來查看文件是否已被清理。但是這讓我很感興趣。在這個級別上,我甚至無法在java 7 NIO.2 API中找到文件屬性訪問的任何內容。

+0

這聽起來像是冰山一角。如何使用標準Java API編寫稀疏文件?可移植性如何? - 你的應用程序是否可以在沒有此功能的平臺上運行?當稀疏文件被擴展時,你準備好處理突然缺少的磁盤空間嗎? –

+0

Java文件NIO有一些「FileAttributeViews」,它將非常適合這個。然而,我不認爲任何這些標準屬性列出「塊分配」或「實際磁盤使用情況」(無論枚舉鍵Javadoc nur)。 http://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/FileAttributeView.html – eckes

回答