【发布时间】:2020-02-29 12:38:29
【问题描述】:
我正在尝试找到一种有效的方法来对大小超过 String's max size 的 ByteArrayOutputStream 进行模式匹配。
对适合单个字符串的 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 max size,问题就变成了:
- 将
baos输入到多个字符串中。 - “滑动”模式匹配这些多个字符串的串联(即原始
baos内容)。
第 2 步看起来比第 1 步更具挑战性,但我知道像 Unix sed 这样的实用程序只能在文件上执行此操作。
实现这一目标的正确方法是什么?
【问题讨论】:
-
我认为匹配
OutputStream没有多大意义,不是吗?您不是在写入流,而是在读取它 - 所以它应该是InputStream。
标签: java string outputstream