无法从非空的InputStream中读取内容

时间:2011-08-29 07:53:36

标签: java buffer inputstream

我有一段代码从非空的InputStream中读取内容。但是,它在Eclipse中工作正常并在我的计算机中使用ant脚本,但它在另一台计算机中失败,结果是一个空字符串,我已经检查过,InputStream不为null。输入流正在读取本地文件,该文件不为空。

以下是我尝试过的两种不同方法,它们都返回一个空字符串:

方式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 个答案:

答案 0 :(得分:2)

输入流可以是非null但仍然为空 - 如果没有抛出异常但返回空字符串,则输入流 为空。您应该首先查看打开输入流的代码 - 从流中读取的代码不是错误的来源,尽管您需要确定要尝试读取的编码,并使用该代码适当。 (第一个代码看起来更好,明确使用UTF-8并使用InputStreamReader进行文本转换。)