Java 为什么使用getFreeSpace/getTotalSpace/getUsableSpace与df-H命令的输出不同

Java 为什么使用getFreeSpace/getTotalSpace/getUsableSpace与df-H命令的输出不同,java,Java,我有一个外部SSD磁盘(/dev/sda) 键入df-h时: size used avil use% 587G 383G 175G 69% 键入df-H时: size used avil use% 630G 411G 188G 69% 当使用getTotalSpace()/(1024*1024)时,我得到了:600772 当使用getUsableSpace()/(1024*1024)时,我得到了:178568 当使用getFreeSpace()/(1024*1024)时,我得到了:20910

我有一个外部SSD磁盘(/dev/sda)

键入df-h时:

size used avil use%
587G 383G 175G 69%
键入df-H时:

size used avil use%
630G 411G 188G 69%
当使用
getTotalSpace()/(1024*1024)
时,我得到了:600772

当使用
getUsableSpace()/(1024*1024)
时,我得到了:178568

当使用
getFreeSpace()/(1024*1024)
时,我得到了:209108

如果我试着计算一下亲子关系中的使用率,我不会得到69%


错误是什么?

69%的
df
计算为“已使用/(已使用+可用)”,即
383/(383+175)=69%
。不计算为“已使用/尺寸”

Java中没有“used”(与“size-available”不同),因此无法进行相同的计算

但在这两种情况下,您都可以计算“可用/大小”:

  • 188/630=30%
  • 209108/600772=30%

  • 没有bug。您在比较不同的东西。

    69%的
    df
    计算为“已使用/(已使用+可用)”,即
    383/(383+175)=69%
    。不计算为“已使用/尺寸”

    Java中没有“used”(与“size-available”不同),因此无法进行相同的计算

    但在这两种情况下,您都可以计算“可用/大小”:

  • 188/630=30%
  • 209108/600772=30%

  • 没有bug。您在比较不同的东西。

    如果您自己根据DF输出计算百分比,您也不会得到69%(相反,百分比与Java中的相同,减去一点舍入)。去问问超级用户,他们在哪里知道DFI的特性如果你自己计算DF输出的百分比,你也得不到69%(相反,这个百分比与Java中的相同,减去一点舍入)。去问问超级用户,他们在哪里知道DFSo的特性?我如何计算Java中的可用空间%?@Boom我在回答中使用了你的数字
    209108/600772=30%
    在你的问题中,你可以看到这些数字都是从哪个java调用的。因此,我如何用java计算这一百分比的可用空间?@Boom我在回答中使用了你的数字
    209108/600772=30%
    您可以在问题中看到这些数字中的每一个都来自哪个java调用