使用available()时无法获取整个数据

时间:2014-07-23 05:30:07

标签: java inputstream

我在读取inputStream时有时无法得到整个数据(收到somtime完整数据)。

 private String readInputStream(InputStream in) {
            PushbackInputStream inputStream = (PushbackInputStream) in;
            StringBuffer outputBuffer = null;
            try {
                int size = inputStream.available();
                    outputBuffer = new StringBuffer(size);
                    // append the data into the stringBuilder
                    for (int j = 0; j < size; j++) {
                        int ch = inputStream.read();
                        outputBuffer.append((char) ch);
                    }
            } catch (IOException ioe) {
                Log.e("error", "IOException: " +
                        ioe.getMessage());
            }
            if (outputBuffer != null) {
                return outputBuffer.toString();
        }

我应该读取输入流,直到inputStream.available()为零..?inputStream中的数据是大的.Plz建议使用示例代码

1 个答案:

答案 0 :(得分:1)

您误用available().请参阅Javadoc。它与&#39; size&#39;无关,只有当前可以无阻塞地读取的内容。这可以只有零字节。

您应该阅读直到流的结尾,或直到您有完整的消息,行或文档,或者您正在阅读的任何内容。

由于您未在此代码中使用PushbackInputStream,因此与此问题无关。