我从互联网上下载了一个InputStream。我需要对它应用正则表达式 - 以便将所有出现的正则表达式更改为字符串,这是提供的。 我需要一个InputStream作为返回值,因为它应该被转发到api。
基本上,这种签名是最好的:
InputStream applyRegex(InputStream stream, Pattern pattern, String changeString){
...
}
我对使用流有非常基本的了解,如果有可能,请以方法形式给出答案。
顺便说一句,我收到的输入流的大小为0,直到我调用方法read(byte [])
答案 0 :(得分:0)
使用github.com/rwitzel/streamflyer库进行管理。 如果app.gradle我们有:
compile 'com.github.rwitzel.streamflyer:streamflyer-core:1.2.0';
方法:
InputStream applyRegex(InputStream stream, String pattern, String changeString){
// byte stream as character stream
Reader originalReader = new InputStreamReader(inputStream, charsetName);
// create the modifying reader
Reader modifyingReader = new ModifyingReader(originalReader, new RegexModifier(pattern, 0, replacement));
// character stream as byte stream
inputStream = new ReaderInputStream(modifyingReader, charsetName);
return inputStream;
}