5

如何获得任何文件的可用磁盘空间?对于像这样的普通文件:

C:\Users\MyName\AppData\Local\Temp\somefile.tmp

我收到的值是 0。仅适用于根(分区)文件,例如:

C:

我收到了真正的价值。如何找到任何文件的根(分区)?问题似乎还在于父层次结构中可能存在链接。这意味着 c: 不能是文件的分区。

当然,这个工作平台应该是独立的。

4

2 回答 2

7

File.getFreeSpace()如果文件存在于指定位置,则有效。例如:

File file = new File("D:\\1\\1.txt");
System.out.println(file.getFreeSpace());

只有当 1.txt 存在于驱动器 D 的目录 1 中时,才会打印驱动器 D 上剩余的可用空间。如果不存在,则返回 0。也许您可以在目录中创建一个临时文件来查询可用空间并删除一次你拥有了它。

于 2013-10-19T12:31:45.603 回答
7

java.nio在这些东西上很棒。

使用类似这样的方法在磁盘中获取可用空间:

    Files.getFileStore(Paths.get("path to file").toRealPath()).getUsableSpace();

要获得 root,您可以使用以下内容:

Paths.get("path to file").toRealPath().getRoot()
于 2013-10-19T12:38:41.047 回答