题 如何找到使用Java留下多少磁盘空间?


如何找到使用Java留下多少磁盘空间?


49
2018-06-26 21:09


起源




答案:


只需看看File类 文件。这是1.6中的新功能之一。

这些新方法还包括:

  • public long getTotalSpace()
  • public long getFreeSpace()
  • public long getUsableSpace()

如果您仍在使用1.5,那么您可以使用 Apache Commons IO 图书馆及其 FileSystem类


74
2018-06-26 21:13



请注意,getUsableSpace不等于getFreeSpace。例如,在Linux文件系统上,分区通常具有许多保留块。这些包含在getFreeSpace()返回的值中,但不包含在getUsableSpace()返回的值中。因此,如果您对要写入文件的空间感兴趣,请使用getUsableSpace - NOT getFreeSpace()。 - Mikkel
“为了上帝的缘故,你正在使用”,而不是“你的使用”。它的系统类。 - biggvsdiccvs


Java 1.7有一个稍微不同的API,可以通过查询自由空间 FileStore的 上课通过 getTotalSpace()getUnallocatedSpace() 和 getUsableSpace() 方法。

NumberFormat nf = NumberFormat.getNumberInstance();
for (Path root : FileSystems.getDefault().getRootDirectories()) {

    System.out.print(root + ": ");
    try {
        FileStore store = Files.getFileStore(root);
        System.out.println("available=" + nf.format(store.getUsableSpace())
                            + ", total=" + nf.format(store.getTotalSpace()));
    } catch (IOException e) {
        System.out.println("error querying space: " + e.toString());
    }
}

此API的优点是,在查询磁盘空间失败时,您将获得有意义的异常。


48
2017-10-19 03:24



在Linux Debian上,FileSystems.getDefault()。getRootDirectories()调用只返回“/”目录。 - pako


使用CommonsIO和FilesystemUtils:

https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileSystemUtils.html#freeSpaceKb()

例如

FileSystemUtils.freeSpaceKb("/"); 

或者内置到JDK中:

http://java.sun.com/javase/6/docs/api/java/io/File.html#getFreeSpace()

new File("/").getFreeSpace();

15
2018-06-26 21:14



是否有任何其他内置函数可以满足此目的而无需创建新文件? - user892871
它不会在磁盘上创建新文件,只是一个File对象,如果这是您所担心的 - Jerico Sandhorn
FileSystemUtils只需执行“df”命令(或在Windows上使用DIR)。太可怕了。 - Jeffrey Blattman


链接

如果您是Java程序员,您可以   已经被问过这么简单,   愚蠢的问题:“如何找到   我系统上剩余的可用磁盘空间?“   问题是答案是   系统依赖。实际上,它是   实施即系统   依赖。直到最近,   没有独特的解决方案可以回答   这个问题,虽然有必要   已登录Sun的Bug数据库   自1997年6月以来。现在有可能   获得Java 6中的可用磁盘空间   类File中的一个方法,其中   返回未分配的数量   由...命名的分区中的字节   抽象路径名称。但你可能会   对可用磁盘空间感兴趣   (可写的那个)。它是均匀的   可以获得总磁盘空间   使用该方法的分区   getTotalSpace()。


6
2018-06-26 21:12





在使用java检查磁盘空间时,您在java.io File类中具有以下方法

  • getTotalSpace()
  • getFreeSpace()

这肯定会帮助您获得所需的信息。例如,你可以参考 http://javatutorialhq.com/java/example-source-code/io/file/check-disk-space-java/ 这给出了使用这些方法的具体例子。


2
2018-04-02 16:53



欢迎来到Stack Overflow!请注意,由于两个原因,不鼓励在此处链接到您自己的网站/产品;首先,答案应作为独立答案发布,而不仅仅是指向外部网站的链接。其次,自我推销往往在这里不受欢迎,并且经常被标记为垃圾邮件(特别是如果没有披露您链接到您自己的网站/产品)。 - Andrew Barber


public class MemoryStatus{  
 public static void main(String args[])throws Exception{  
  Runtime r=Runtime.getRuntime();  
  System.out.println("Total Memory: "+r.totalMemory());  
  System.out.println("Free Memory: "+r.freeMemory());    
 }
}

尝试使用此代码获取磁盘空间


-1
2018-01-29 08:03



此代码用于内存,而不是磁盘空间。 - Robert Munteanu