来自 InputStream 的 Java 字符串
我有一个,需要简单地得到一个单一的简单与完整的内容。InputSteam
String
这在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
获得 后,您可以创建一个并逐行读取内容,或者只是逐个缓冲区读取并追加到 ,直到调用返回 -1。InputStreamReader
BufferedReader
StringBuilder
read()
番石榴库使第二部分变得容易 - 使用CharStreams.toString(inputStreamReader)。
。