2009-08-09 3 views
-1

У меня проблема с чтением из потока ввода java. У меня есть буфер размером 1024 и входной поток размером 29k-31k. Я читаю inputStream в цикле, но я получаю только 29 байтов для первого чтения, 39 для второго чтения, и ничего после этого. Такое же поведение повторяется для разных InputStream. (Я пишу данные в выходной поток, но я не вижу, как это может повлиять на первое чтение)InputStream read не читает данные

 int bytesRead = 0; 
     byte[] byteBuf = new byte[1024]; 

     OutputStream fileStream = FileUtil.openFileForWrite(saveTo); 

     bytesRead = reader.read(byteBuf); 
     while(bytesRead!=-1){ 
      fileStream.write(byteBuf, 0, bytesRead); 
      bytesRead = reader.read(byteBuf); 
     } 

Что мне не хватает?

Любая помощь приветствуется :)

ответ

1

Где вы получаете входной поток из? Откуда вы знаете, что это 29K-31K?

Ваш код выглядит разумным для меня, хотя я обычно структурирую петлю, немного отличающуюся, чтобы избежать дублирования вызова read.

+0

Я знал, что inputStream исходит из HTTPConnection, что я пропустил, так это то, что мой коллега добавил строку для проверки пользовательского класса InputStream, который вызывал ошибку. Должен был вернуться раньше, спасибо за подсказку! :) – Tamar

0

Вы пытались использовать readline() вместо read()?

Path file = ...; 
InputStream in = null; 
try { 
    in = file.newInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    String line = null; 
    while ((line = reader.readLine()) != null) { 
     System.out.println(line); 
    } 
} catch (IOException x) { 
    System.err.println(x); 
} finally { 
    if (in != null) in.close(); 
} 
+0

Это предполагает, что это текстовые данные для начала, и не дает никакого представления о том, почему это может происходить в первую очередь. –

Смежные вопросы