如何在Android中返回FileInputStream的值

这个问题在这里已经有了答案:

  • 将InputStream读取/转换为字符串56个答案

  • 考虑你的代码之间的区别:

            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?