How to return value of FileInputStream in Android

This question already has an answer here:

  • Read/convert an InputStream to a String 56 answers

  • Consider the difference between your code:

            while (inputStream.read(reader) != -1) {}
            UserPassFile = new String(reader);
    

    And this alternative:

            while (inputStream.read(reader) != -1) {
                 UserPassFile = new String(reader);
            }
    

    In your case, UserPassFile is assigned from reader after every read() call, including the final one which fails. In the second case, UserPassFile is only assigned after a read which succeeds, and so should still contain a non-empty string to return when the end of the method is reached.

    However, you seem to be doing one other odd thing. You assume that you will be able to read the entire .available() amount of data in a single read, which is probably true (at least if you were able to allocate a byte[] that large). However, after reading this data, you try again and see if you fail, which seems unnecessary. It would seem that if you are going to make the assumption that you can read the data in a single attempt, then you should simply close the stream and return once you have done so - there doesn't seem to be a compelling reason to try yet another read which would be expected to fail. Otherwise, if there's a possibility that you can't get all the data in a single read(), you should keep track of how much you have gotten and keep appending until you get a failed read or otherwise decide you are done.


    I would suggest using an input stream reader. Check out http://developer.android.com/reference/java/io/InputStreamReader.html Your code will look something like:

    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/13736.html

    上一篇: 解码Java HTTP GET的InputStream

    下一篇: 如何在Android中返回FileInputStream的值