分配给稀疏文件的块数

时间:2011-11-11 13:53:20

标签: java filesystems file-attributes

有没有办法访问使用标准Java File API分配给文件的块数?或者甚至用一些不支持的&未记录的API不足。任何可以避免本机代码插件的东西。

我说的是 fstat / stat 系统调用在Unix中工作的 struct stat st_blocks 字段。

我想要做的是创建一个现在有大量冗余数据的文件的稀疏副本,即创建一个新副本,只包含活动数据但是稀疏地写入它。然后使用原子重命名/链接操作交换这两个文件。但是我需要一种方法来找出事先为文件分配了多少块,它可能已经被稀疏地复制了。然后删除旧文件。

这将用于释放100%Java的数据库应用程序中的磁盘空间。依赖于文件系统中的稀疏文件支持的好处是我不必更改指出数据所在位置的索引,这会增加手头任务的复杂性。

我认为依靠文件时间戳来查看文件是否已被清理,我可以做得更好。但这引起了我的兴趣。我甚至无法在java 7 NIO.2 API中找到任何关于此级别文件属性访问的内容。

1 个答案:

答案 0 :(得分:3)

我能想到的唯一方法是使用ls -s filename来获取磁盘上文件的实际大小。 http://www.lrdev.com/lr/unix/sparsefile.html