Dies ist die von mir bevorzugte Lösung:
public static Long getFileSize(String path) {
return getFileSize(new File(path));
}
public static Long getFileSize(File file) {
return (!file.isFile()) ? -1L : file.length();
}
Beachten Sie, dass -1L und nicht 0L zurückgegeben wird, damit der Aufrufer zwischen einer leeren Datei und einer "Datei", deren Länge aus irgendeinem Grund nicht bestimmt werden kann, unterscheiden kann. Die file.length()
wird in einigen Fällen, in denen Sie keine Datei mit der Länge Null haben, Null zurückgeben; z. B.
- wenn die
file
gibt es nicht
- wenn die
file
ist ein Verzeichnis
- wenn die
file
eine spezielle Datei ist (z.B. Gerätedatei, Pipe, etc.) und das Betriebssystem ihre Länge nicht bestimmen kann.
El file.isFile()
Call befasst sich mit diesen Fällen. Es ist jedoch umstritten, ob die Methode(n) Folgendes zurückgeben sollten -1L
oder eine Ausnahme auslösen. Die Antwort auf diese Debatte hängt davon ab, ob die -1L
Die Frage, ob es sich um "normale" oder "außergewöhnliche" Fälle handelt, lässt sich nur in Bezug auf den Kontext bestimmen, in dem die Methode angewendet werden soll,