Невозможно прочитать содержимое из непустого InputStream - PullRequest
0 голосов
/ 29 августа 2011

У меня есть кусок кода, который читает содержимое из непустого InputStream.Тем не менее, он отлично работает в Eclipse и использует ant-скрипт на моем компьютере, но не работает на другом компьютере, в результате получается пустая строка, я проверял, InputStream не является нулевым.Входной поток читает локальный файл, и файл не пустой.

Вот два разных способа, которые я пробовал, оба возвращают пустую строку:

Путь 1:

StringBuilder aStringBuilder = new StringBuilder();

String strLine = null;

BufferedReader aBufferedReaders = new BufferedReader(new InputStreamReader(anInputStream, "UTF-8"));

while ((strLine = aBufferedReaders.readLine()) != null)
{
  aStringBuilder.append(strLine);
}

return aStringBuilder.toString()

Способ 2:

StringBuffer buffer = new StringBuffer();

byte[] b = new byte[4096];

for (int n; (n = theInputStream.read(b)) != -1;)
{
  buffer.append(new String(b, 0, n));
}

String str = buffer.toString();

return str;

Заранее спасибо!

1 Ответ

2 голосов
/ 29 августа 2011

Входной поток может быть ненулевым, но все же пустым - и если не генерируется никаких исключений, но возвращается пустая строка, тогда входной поток является пустым. Вы должны сначала взглянуть на код, открывающий входной поток - код для чтения из потока не является источником ошибки, хотя вам нужно решить, какую кодировку вы пытаетесь прочитать, и использовать это соответственно. (Первый код выглядит лучше для меня, явно использующий UTF-8 и использующий InputStreamReader для преобразования текста.)

...