发布于2026-07-09 阅读(0)
扫一扫,手机访问
File.getFreeSpace() 通过目标分区路径构造 File 实例来获取剩余空间。但更稳妥的做法,是用 getUsableSpace(),并提前校验 exists() 和 canRead()。另外别忘了跨平台路径格式和容器环境的限制,否则容易踩坑。

File.getFreeSpace() 是 Ja va 里获取文件系统剩余可用空间的便捷方法,但注意:它并不是“指定分区”的直接操作——它作用的是 File 对象所代表的路径所在的文件系统。所以要想“动态获取指定磁盘分区”,关键在于:构造一个位于目标分区上的有效 File 实例(比如根目录或者任意一个存在的路径),然后调用它的 getFreeSpace()。
话不多说,我们直接看具体怎么落地。
Ja va 标准库没有提供类似 Windows 的 C: 或 Linux 的 /dev/sda1 那样直接枚举挂载点的接口。所以你得先知道目标分区的挂载路径——Windows 下是盘符加冒号加反斜杠,比如 "C:\";Linux/macOS 下是挂载目录,比如 "/home" 或 "/"。
new File("D:\").getFreeSpace() 获取 D 盘剩余空间new File("/data").getFreeSpace() 获取挂载在 /data 的分区空间 或 / 推荐保留,确保指向根目录而非某个子文件三个方法返回值单位都是字节(long),但语义完全不同,选错了容易误判:
调用之前最好先检查路径的有效性,避免返回 0 或者遇到意想不到的行为:
new File("Z:\") 在根本没有 Z 盘的机器上),getFreeSpace() 会返回 0L,不会抛异常,但数据没有意义canRead() 做一次判断File target = new File("E:\");
if (target.exists() && target.canRead()) {
long usable = target.getUsableSpace(); // 更稳妥
System.out.println("E盘可用空间: " + usable / 1024 / 1024 + " MB");
} else {
System.err.println("无法访问 E:\,请检查路径或权限");
}
Ja va 虽然抽象了底层差异,但实际行为仍然受操作系统影响:
"c:\" 和 "C:\" 视为同一分区),但最好保持统一风格getUsableSpace() 返回的是容器挂载卷的可用空间,而不是宿主机全局空间——这一点常常被忽视
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8