2013-01-23 3 views
63

Mögliche Duplizieren:
java get file size efficientlyGesamtgröße der Datei in Bytes

Ich habe eine Datei namens Dateiname, die in E://file.txt befindet.

FileInputStream fileinputstream = new FileInputStream(filename); 

Was ich tun möchte, ist die Größe dieser Datei in Bytes zu berechnen. Wie kann ich das machen lassen?

+0

Warum möchten Sie es mit einem Fileinputstream tun? – SomeJavaGuy

+1

Dies ist keine doppelte Antwort. Wie man eine Dateigröße erhält und wie man eine Dateigröße effizient erhält, sind zwei verschiedene Themen. –

+0

@JanBodnar Sie könnten nominieren, diese Frage erneut zu öffnen. – Illep

Antwort

141

Sie können die Methode length() unter File verwenden, die die Größe in Byte zurückgibt.

5

Sie können das einfach mit Files.size(new File(filename).toPath()) tun.

+0

Im Nachhinein kann es sein, dass sowohl "Pfad" als auch "Datei" ziemlich ausführlich sein müssen. @ Swapnils Antwort könnte präziser sein. – akaIDIOT

+0

Ja, aber Java.nio.Files ist für Java definiert 1.7+ –

+0

Beachten Sie, dass Java 1.6 für eine Weile das Ende des Lebens war. Sogar 1,7 ist seit April 2015 effektiv eol. Ich denke nicht, dass dies in 1,7+ verfügbar ist, ist ein echtes Problem. – akaIDIOT

34

Sie brauchen nicht FileInputStream, um die Dateigröße zu berechnen, new File(path_to_file).length() ist genug. Oder, wenn Sie darauf bestehen, verwenden Sie fileinputstream.getChannel().size().

+0

Was gibt es zurück? 'fileinputstream.getChannel(). size()' – Illep

+1

siehe http://docs.oracle.com/javase/6/docs/api/java/nio/channels/FileChannel.html#size() –

3
public static void main(String[] args) { 
     try { 
      File file = new File("test.txt"); 
      System.out.println(file.length()); 
     } catch (Exception e) { 
     } 
    }