2016-04-24 4 views
1

Ich erhalte eine Datei mit dataInputStream.readFully, also Ich möchte den Fortschritt der Übertragung zeigen. Ist es möglich, den Fortschritt der ReadFully-Methode zu kennen? Danke.Fortschritt von dataOutputStream.readFully

+0

Nr. Um den Fortschritt zu verfolgen, müssen Sie tun, was es tut. Schau dir die Quelle an: http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/io/DataInputStream.java#l172 – Andreas

Antwort

1

Nein - der springende Punkt ist, dass es ein einziger Aufruf ist, um es einfacher zu lesen.

Wenn Sie langsamer lesen möchten (z. B. um einen Fortschrittsbalken zu aktualisieren), können Sie einfach einen Block mit InputStream.read(byte[], int, int) in einer Schleife lesen, bis Sie alle Daten gelesen haben. Zum Beispiel:

byte[] data = new byte[bytesToRead]; 
int offset = 0; 
int bytesRead; 
while ((bytesRead = stream.read(data, offset, data.length - offset)) > -1) { 
    offset += bytesRead; 
    // Update progress indicator 
} 

Dies ist ebenso wie die JDK 8 code for readFully, aber mit Fortschrittsanzeige in der Schleife.

+0

@Andreas: Ja, der Punkt Wenn Sie selbst schleifen, kann das OP eine Fortschrittsanzeige aktualisieren. –

+0

@Andreas: Ich verstehe. Erledigt. –

+0

Vielen Dank !, das ist so nützlich –