2016-06-01 9 views
1

Ich habe eine externe SSD-Festplatte (/ dev/sda).Warum mit getFreeSpace/getTotalSpace/getUsableSpace gibt andere Ausgabe von df -H Befehl

bei der Eingabe df -h:

size used avil use% 
587G 383G 175G 69% 

bei der Eingabe df -H:

size used avil use% 
630G 411G 188G 69% 

Wenn getTotalSpace()/(1024*1024) mit Ich erhalte: 600772

Wenn getUsableSpace()/(1024*1024) mit Ich erhalte : 178568

Bei der Verwendung von getFreeSpace()/(1024*1024) bin ich Getti ng: 209108

Wenn ich versuchen werde, die Verwendung in Elternschaft zu berechnen, werde ich nicht 69% bekommen.

Was ist der Fehler?

+0

Wenn Sie den Prozentsatz selbst aus der DF-Ausgabe berechnen, erhalten Sie auch keine 69% (stattdessen ist der Prozentsatz der gleiche wie in Java, abzüglich ein bisschen Rundung). Fragen Sie auf Superuser, wo sie von den Eigenheiten von DF wissen können –

Antwort

0

Die 69% von df werden als "used/(used + available)" berechnet, was 383/(383 + 175) = 69% ist. Es wird nicht als "verwendet/Größe" berechnet.

Sie haben nicht in Java "verwendet" (es ist nicht das gleiche wie "Größe - verfügbar"), so dass Sie nicht die gleiche Berechnung vornehmen können.

Aber Sie können "verfügbar/Größe" in beiden Fällen berechnen:

  1. 188/630 = 30%
  2. 209108/600772 = 30%

Es gibt keine Fehler. Du hast verschiedene Dinge verglichen.

+0

Also wie kann ich das (% von freiem Speicherplatz) in Java berechnen? –

+0

@Boom Ich habe Ihre Nummern in meiner Antwort verwendet. '209108/600772 = 30%' Sie können in Ihrer Frage sehen, von welchem ​​Java-Aufruf jede dieser Zahlen kommt –

Verwandte Themen