Was genau passiert hier?

Pasukaru

Grünschnabel
Howdy,

könnte mir jemand erklären, was genau hier passiert?
Java:
while( (length = fileInputStream.read(buffer)) >=0)
{
	fileInputStream.read(buffer);
	cipherOutputStream.write(buffer, 0, length);
}
Im Prinzip weiß ich was vor sich geht - eine Datei wird von anfang bis ende eingelesen und Stück für Stück verarbeitet - aber die While-Bedingung is mir nich ganz klar...
Hab bis jetzt noch keine Zuordnung bei sowas gesehn..
Der cipherOutputStream macht mir auch n bissl Probleme... Offset steht immer auf 0 - Müsste der nich an die bereits geschriebene Menge an Daten angepasst werden?
Oder hat es damit was zu tun, dass das flush() erst nach der Schleife kommt?
Bin etwas verwirrt und bitte um Hilfe. :)

Danke schonmal für eure Antworten!
 
fileInputStream.read(buffer) liest von der Datei in den Buffer->siehe API

Die read-Methode hat einen Rückgabe-Werte. Nämlich wie viel Bytes eingelesen wurden. Die Anzahl bytes werden benötigt, um einerseits zu wissen, ob man am Ende der Datei ist und andererseits zu wissen, wie viele bytes aus dem Buffer man benutzen muss.

Die Zuweisung innerhalb eines ifs, ist afaik nur bei der Benutzung von Streams oä üblich.
 
Zurück