分配给稀疏文件的块数

发布于 2024-12-15 03:52:38 字数 531 浏览 2 评论 0原文

有什么方法可以使用标准 Java 文件 API 访问分配给文件的块数吗?或者甚至用一些不受支持的 & 来做到这一点。底层未记录的 API。任何可以避免本机代码插件的事情。

我说的是 Unix 中 fstat/stat 系统调用所使用的 struct statst_blocks 字段。

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

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

我认为我可以通过依赖文件时间戳来查看文件是否已被清理,从而做得很好。但这引起了我的兴趣。我什至在 java 7 NIO.2 API 中找不到任何用于此级别文件属性访问的内容。

Is there any way to access the number of blocks allocated to a file with the standard Java File API? Or even do it with some unsupported & undocumented API underneat. Anything to avoid native code plugins.

I'm talking about the st_blocks field of struct stat that the fstat/stat syscalls work on in Unix.

What I want to do is to create a sparse copy of a file that now has lots of redundant data, i.e. make a new copy of it, only containing the active data but sparsely written to it. Then swap the two files with an atomic rename/link operation. But I need a way to find out how many blocks are allocated to the file beforehand, it might already have been sparsely copied. The old file is then removed.

This will be used to free up disk space in a database application that is 100% Java. The benefit on relying on sparse file support in the filesystem is that I would not have to change the index that point out the location where the data is, that increases the complexity of the task at hand.

I think I can do somewhat well by relying on the file timestamp to see if files have already been cleaned up. But this intrigued me. I can not even find anything in the java 7 NIO.2 API for file attribute access at this level.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

善良天后 2024-12-22 03:52:38

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

The only way I can think of is to use ls -s filename to get the actual size of the file on disk. http://www.lrdev.com/lr/unix/sparsefile.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文