我试图找到一种有效的方法来对大小超过String's max size的ByteArrayOutputStream进行模式匹配。
在适合单个String的ByteArrayOutputStream上进行模式匹配很简单:
private boolean doesStreamContainPattern(Pattern pattern,ByteArrayOutputStream baos) throws IOException {
/*
* Append external source String to output stream...
*/
if (pattern != null) {
String out = new String(baos.toByteArray(),"UTF-8");
if (pattern.matcher(out).matches()) {
return true;
}
}
/*
* Some other processing if no pattern match
*/
return false;
}
但是,如果baos
的大小超过String最大大小,则问题将变为:
- 将
baos
输入多个字符串。 - “滑动”匹配多个字符串(即原始
baos
内容)的模式匹配的模式。
步骤2看起来比步骤1更具挑战性,但是我知道诸如Unix sed之类的实用程序只能在文件上执行此操作。
完成此任务的正确方法是什么?