来自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