来自InputStream的Java字符串

可能重复:
如何将InputStream转换为Java中的字符串?
在Java中,如何将输入流读入字符串?

我有一个InputSteam ,只需要获得一个简单的String和完整的内容。

这在Java中如何完成?


这是对Gopi的答案的一种修改,它没有行结束问题,并且更有效,因为它不需要每行都有临时的String对象,并且避免了BufferedReader中的冗余复制和readLine()中的额外工作。

public static String convertStreamToString( InputStream is, String ecoding ) throws IOException
{
    StringBuilder sb = new StringBuilder( Math.max( 16, is.available() ) );
    char[] tmp = new char[ 4096 ];

    try {
       InputStreamReader reader = new InputStreamReader( is, ecoding );
       for( int cnt; ( cnt = reader.read( tmp ) ) > 0; )
            sb.append( tmp, 0, cnt );
    } finally {
        is.close();
    }
    return sb.toString();
}

你需要构造一个InputStreamReader来包装输入流,在二进制数据和文本之间进行转换。 根据您的输入源指定适当的编码。

一旦你有了一个InputStreamReader ,你可以创建一个BufferedReader并逐行读取内容,或者只读取缓冲区缓冲区并追加到StringBuilder直到read()调用返回-1。

Guava库使这个易于使用的CharStreams.toString(inputStreamReader)的第二部分成为可能。


您也可以使用Apache Commons IO库

具体来说,您可以使用IOUtils#toString(InputStream inputStream)方法

链接地址: http://www.djcxy.com/p/13727.html

上一篇: Java String from InputStream

下一篇: Read text from InputStream