通过在其上应用正则表达式来更改InputStream

时间:2017-07-13 11:35:00

标签: java android regex stream inputstream

我从互联网上下载了一个InputStream。我需要对它应用正则表达式 - 以便将所有出现的正则表达式更改为字符串,这是提供的。 我需要一个InputStream作为返回值,因为它应该被转发到api。

基本上,这种签名是最好的:

InputStream applyRegex(InputStream stream, Pattern pattern, String changeString){
    ...
}

我对使用流有非常基本的了解,如果有可能,请以方法形式给出答案。

顺便说一句,我收到的输入流的大小为0,直到我调用方法read(byte [])

1 个答案:

答案 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;
}