Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java获取文件夹*中的可用磁盘空间*_Java - Fatal编程技术网

如何从Java获取文件夹*中的可用磁盘空间*

如何从Java获取文件夹*中的可用磁盘空间*,java,Java,如果存储日志文件的磁盘容量达到75%,我需要发送警报通知。然而,我在SO和其他网站上看到的关于Java的一切都显示了如何通过提供分区名称(例如Windows中的驱动器号)来获得可用磁盘空间。然而,在一个存在符号链接的世界里(使用NTFS的Linux和Windows),这是没有帮助的;在生产环境中,[tomcat path]\logs几乎保证不会与[tomcat path]\webapps、[tomcat path]\conf等存在于同一台物理机器上 因此,我需要找出在基于NTFS的Windows

如果存储日志文件的磁盘容量达到75%,我需要发送警报通知。然而,我在SO和其他网站上看到的关于Java的一切都显示了如何通过提供分区名称(例如Windows中的驱动器号)来获得可用磁盘空间。然而,在一个存在符号链接的世界里(使用NTFS的Linux和Windows),这是没有帮助的;在生产环境中,[tomcat path]\logs几乎保证不会与[tomcat path]\webapps、[tomcat path]\conf等存在于同一台物理机器上


因此,我需要找出在基于NTFS的Windows系统上,符号连接到“[tomcat path]\logs”文件夹的任何存储上仍有多少物理空间(不过,显然,最好使用独立于系统的方法)。

我看到您正试图启动自己的警报系统

我会使用一个滚动文件追加器,并确保永远不会因为日志而面对一个完整的磁盘

在更复杂的场景中,将日志拆分为“非常重要的事务”、“关键错误”和“其他所有内容”是有意义的

如果您必须将日志保存更长时间,那么使用Logstash和Filebeat等工具收集日志,并使用普罗米修斯和格拉法纳监控日志收集器空间将是一个明智的解决方案。普罗米修斯会帮你处理警报的

剩下的原木就让它们滚吧

我希望它能有所帮助。

您需要的是目录:

Path dir = Paths.get(System.getProperty("jboss.server.log.dir"));
dir = dir.toRealPath();

FileStore fs = Files.getFileStore(dir);
FileStore类具有用于检查其所代表的存储设备或文件系统上的空间的方法。(这有点让人困惑;FileStore类表示一个文件系统,但FileSystem类实际上表示一组作为单一层次结构的文件系统。)

long freeSpace = fs.getUsableSpace();