有没有办法通过标准Java File API访问分配给文件的块数?甚至可以用一些不支持的未公开的API来做到这一点。任何要避免本地代码插件。分配给稀疏文件的块数
我谈论的的st_blocks 结构统计的领域的FSTAT/STAT系统调用在Unix系统。
我想要做的是创建一个文件的稀疏副本,该副本现在有大量冗余数据,即创建一个新副本,只包含活动数据但只是稀疏地写入它。然后用原子重命名/链接操作交换这两个文件。但我需要一种方法来查明事先分配给文件的块数,它可能已经被稀疏地复制了。旧文件然后被删除。
这将用于释放100%Java数据库应用程序中的磁盘空间。依靠文件系统中稀疏文件支持的好处是,我不必更改指出数据位置的索引,这增加了手头任务的复杂性。
我想我可以通过依靠文件时间戳来查看文件是否已被清理。但是这让我很感兴趣。在这个级别上,我甚至无法在java 7 NIO.2 API中找到文件属性访问的任何内容。
这听起来像是冰山一角。如何使用标准Java API编写稀疏文件?可移植性如何? - 你的应用程序是否可以在没有此功能的平台上运行?当稀疏文件被扩展时,你准备好处理突然缺少的磁盘空间吗? –
Java文件NIO有一些“FileAttributeViews”,它将非常适合这个。然而,我不认为任何这些标准属性列出“块分配”或“实际磁盘使用情况”(无论枚举键Javadoc nur)。 http://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/FileAttributeView.html – eckes