我有一段代码从非空的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;
提前致谢!
答案 0 :(得分:2)
输入流可以是非null但仍然为空 - 如果没有抛出异常但返回空字符串,则输入流 为空。您应该首先查看打开输入流的代码 - 从流中读取的代码不是错误的来源,尽管您需要确定要尝试读取的编码,并使用该代码适当。 (第一个代码看起来更好,明确使用UTF-8并使用InputStreamReader
进行文本转换。)