Java 通过在InputStream上应用regex替换它

Java 通过在InputStream上应用regex替换它,java,regex,inputstream,Java,Regex,Inputstream,我有一个InputStream,需要对其应用正则表达式。我需要一个OutputStream作为返回值,因为它应该被转发到api。我这样做: // get byte stream InputStream input = ...; OutputStream output; ReplacingInputStream test = new ReplacingInputStream(input, "\\s+", " "); String inputText = IOUtils.toString(test

我有一个
InputStream
,需要对其应用正则表达式。我需要一个
OutputStream
作为返回值,因为它应该被转发到api。我这样做:

// get byte stream
InputStream input = ...;
OutputStream output;

ReplacingInputStream test = new ReplacingInputStream(input, "\\s+", " ");
String inputText = IOUtils.toString(test, StandardCharsets.UTF_8);
System.out.println(inputText); // nothing is changed
但在
输入中没有任何更改。我不知道怎么做,所以我做了

String inputText = IOUtils.toString(input, StandardCharsets.UTF_8);
inputText = inputText.replaceAll("\\s+", " ").trim(); // 
System.out.println(inputText); // Changed

这是快速而简单的,但当然不能很好地扩展到大型流(因为可能内存不足)

看起来“pattern”参数根本不是Regexp模式,甚至不是通配符。这只是一个字符串对字符串的替换


如果我们谈论的是“org.apache.poi.util.ReplacingInputStream”。

是否使用
test
对象作为最终结果?是否使用
test
作为
InputStream
i.o.
input
?比如:
InputStream-oldInput;InputStream输入=新的ReplacingInputStream(旧的输入,“\\s+”,”)为清晰起见,我已更新。请检查是否有帮助