Недавно у меня были проблемы с InputStreams и OutputStreams, когда я пытался реализовать базовый загрузчик файлов в своем приложении для Android. Чтобы продумать все, как это сделал я.Is BufferedInputStream и BufferedOutputstream отличаются от InputStream и Outputstream
Я получаю объект InputStream, используя классы apache HttpClient, затем попытался записать поток в файл .. но странно, когда я буфера InputStream или OutputStream я получаю нечитаемый файл .... это код ..
// Чтобы сделать код кратким, я удалил исключения и закрыл поток.
private void download(InputStream in,String fileName){
//if i dont use the buffered thing and read directly from in everything is ok
// same is the buffered out i had to use in/outstream
BufferedInputStream bufferedIn = new BufferedInputStream(in);
FileOutputStream fout = new FileOutputStream(new File(fileName));
BufferedOutputstream bufferedOut = new BufferedOutputstream(fout);
int read = -1;
while((read = bufferedIn.read()) != -1){
bufferedOut.write(read);
}
//close the buffers
}
Что вы хотите сказать, не прочитанные? Действительно нечитабельно? Усеченный результат? Пустой файл? Будьте осторожны, чтобы действительно закрыть файлы в конце! Они «Буферизованные» потоки, поэтому их закрытие не может привести к записи un'flush в конце ... –
Вам нужно «сбросить» ваш буфер. Это берет все остаточные данные, оставшиеся в буфере, и записывает их в ваш поток. – MeetTitan
Вы уверены, что код установлен правильно? Вы читаете 'буферизированный' не в' bufferedIn'. Кажется, вы упростили свой код ... Пожалуйста, дайте нам оригинальный код. Вы действительно закрываете 'BufferedOutputStream'? –