将流转换为字符串 Java/Groovy

2022-09-01 14:55:56

我从网上偷走了这个片段。但它看起来仅限于4096字节,并且非常丑陋的IMO。有人知道更好的方法吗?我实际上是在使用Groovy btw...

String streamToString(InputStream input) {
        StringBuffer out = new StringBuffer();
        byte[] b = new byte[4096];
        for (int n; (n = input.read(b)) != -1;) {
            out.append(new String(b, 0, n));
        }
        return out.toString();
    }

编辑:

我在Groovy中找到了更好的解决方案:

InputStream exportTemplateStream = getClass().getClassLoader().getResourceAsStream("export.template")
assert exportTemplateStream: "[export.template stream] resource not found"
String exportTemplate = exportTemplateStream.text

答案 1

一些好的和快速的答案。然而,我认为最好的一个是Groovy在InputStream中添加了一个“getText”方法。所以我所要做的就是.并很好地调用了4096评论。stream.text


答案 2

对于时髦

filePath = ... //< a FilePath object
stream = filePath.read() //< InputStream object

// Specify the encoding, and get the String object
//content = stream.getText("UTF-16") 
content = stream.getText("UTF-8") 

输入流类引用

在没有编码的情况下,它将使用当前的系统编码,例如(“UTF-8”)。getText()


推荐