如何在Android中返回FileInputStream的值
这个问题在这里已经有了答案:
考虑你的代码之间的区别:
while (inputStream.read(reader) != -1) {}
UserPassFile = new String(reader);
而这个选择:
while (inputStream.read(reader) != -1) {
UserPassFile = new String(reader);
}
在你的情况下,每次read()调用后,UserPassFile都会从reader中分配,包括最后一次失败。 在第二种情况下,仅在读取成功后才分配UserPassFile,因此在到达方法结束时仍应包含一个非空字符串以返回。
但是,你似乎在做另一件奇怪的事情。 你假设你将能够在一次读取中读取整个.available()数据量,这可能是真的(至少如果你能够分配一个大的byte [])。 然而,在阅读这些数据后,你再试一次,看看你是否失败了,这似乎是不必要的。 看起来,如果你打算假设你可以一次性读取数据,那么你应该简单地关闭流并返回,一旦你这样做 - 似乎没有一个令人信服的理由尝试又一次阅读,预计会失败。 否则,如果有可能无法在单个读取中获取所有数据(),则应记录您已获得的数量并继续追加,直到读取失败或以其他方式确定完成为止。
我会建议使用输入流阅读器。 查看http://developer.android.com/reference/java/io/InputStreamReader.html您的代码如下所示:
inputStream = openFileInput(FILENAME);
InputStreamReader( inputstream, "UTF_8"), 8);
StringBuilder response = new StringBuilder();
String line;
//Read the response from input stream line-wise
while((line = reader.readLine()) != null){
response.append(line).append('n');
}
//Create response string
result = response.toString();
//Close input stream
reader.close();
链接地址: http://www.djcxy.com/p/13735.html
上一篇: How to return value of FileInputStream in Android
下一篇: How to Create a string from a BufferedInputStream using bytes?