来自 InputStream 的 Java 字符串

2022-09-02 20:45:21

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

我有一个,需要简单地得到一个单一的简单与完整的内容。InputSteamString

这在Java中是如何完成的?


答案 1

以下是对 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();
}

答案 2

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

获得 后,您可以创建一个并逐行读取内容,或者只是逐个缓冲区读取并追加到 ,直到调用返回 -1。InputStreamReaderBufferedReaderStringBuilderread()

番石榴库使第二部分变得容易 - 使用CharStreams.toString(inputStreamReader)。


推荐