我有一个要求,我需要在使用Java的Linux系统上获得可用用户磁盘配额(而不是可用磁盘空间)。在这种情况下,可以限制用户磁盘配额(例如2GB),但可用磁盘空间却很大(例如TB)。
问题是我正在运行一些写入文件系统的Java应用程序。在用户磁盘配额用尽之前,我想主动通知用户有关磁盘配额的信息。
我尝试了各种解决方案,但是它们没有用。
- 普通Java File API getFreeSpace()和getUSableSpace()都给我可用磁盘空间,而不是可用磁盘配额。
- 尝试使用Sigar API,但在Sigar中找不到任何API,这给了我
- 尝试使用RandomAccessFile.setLength(SOME_THRESHOLD)检查SOME_THRESHOLD空间是否可用。但是它在Linux系统上也不起作用。它会创建稀疏文件,该文件实际上是创建的,长度为SOME_THRESHOLD,但不占用实际空间(块)。
- 尝试过配额Linux命令,它可以工作,但是我不想使用系统相关命令。这在某些口味上可能会出现问题。
- 其中一种方法是实际创建SOME_THRESHOLD大小的文件,但是每x秒执行一次将不必要地消耗CPU。
我的主要要求是,有什么方法可以给我免费的用户磁盘配额,或者允许我通过创建SOME_THRESHOLD大小的文件来检查可用空间,而无需占用CPU太多资源。
请帮忙。
谢谢。