Czy ktoś może mi wyjaśnić dlaczego praca ta konstrukcja przyzwyczajenie:java odczytu/zapisu konstrukcji
while (fileInputStream.available()>0) {
fileOutputStream.write(fileInputStream.read());
}
a ten działa dobrze:
while (fileInputStream.available()>0) {
int data = fileInputStream.read();
fileOutputStream.write(data);
}
jak dla mnie są one identyczne, ale 1. Jeden przyzwyczajenie poprawnie zapisuj dane (zapisze połowę długości pliku/danych).
Czy jest pętla, której nam nie pokazujesz? Ponieważ read() odczytuje tylko segment danych. Ogólnie rzecz biorąc, ten segment jest określany przez kontener, a int to 32-bitowe, gdzie jako plik output-stream bierze różne bajty o wielkości –
Są one takie same. Zauważ, że to ** nie ** kopiuje całej zawartości strumienia wejściowego do strumienia wyjściowego. Będzie czytać i pisać tylko jeden bajt. – Jesper
jeśli chcesz, aby działało, powinieneś wprowadzić bufor bajtowy http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read (byte []) –