首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从InputStream读取文本

从InputStream读取文本
EN

Stack Overflow用户
提问于 2009-12-12 07:47:49
回答 4查看 17.1K关注 0票数 37

如果我从java.io.InputStream开始,那么将整个流读出为字符串的最简单方法是什么(假设utf-8)?

这应该很容易,但我主要是一个C#用户,谷歌在这方面让我失望了。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-12 08:01:30

根据您喜欢的许可证,它是一个带有雅加达-Commons IO库的one liner

票数 20
EN

Stack Overflow用户

发布于 2009-12-12 07:51:40

在Java中,从流中读取/写入是非常痛苦的。

代码语言:javascript
复制
public static String getStreamContents(InputStream stream) throws IOException {

    StringBuilder content = new StringBuilder()

    Reader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"))
    String lineSeparator = System.getProperty("line.separator");

    try {
        String line
        while ((line = reader.readLine()) != null) {
            content.append(line + lineSeparator)
        }
        return content.toString()

    } finally {
        reader.close()
    }

}
票数 1
EN

Stack Overflow用户

发布于 2009-12-13 02:09:40

使用Commons-IO可能是最好的选择。出于您的兴趣,另一种方法是复制所有字节,然后将其转换为字符串。

代码语言:javascript
复制
public static String readText(InputStream is, String charset) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] bytes = new byte[4096];
    for(int len;(len = is.read(bytes))>0;)
        baos.write(bytes, 0, len);
    return new String(baos.toByteArray(), charset);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1891606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档