我正在从外部库调用一个方法,其签名如下(简化):
public class Alien
{
// ...
public void munge(Reader in, Writer out) { ... }
}
该方法基本上从一个流读取字符串并将其结果写入另一个流。我有几个需要通过此方法处理的字符串,但它们都不存在于文件系统中。字符串可能会很长(每个字符串大约 300KB)。理想情况下,我想调用 munge() 作为过滤器:
public void myMethod (ArrayList<String> strings)
{
for (String s : strings) {
String result = alienObj.mungeString(s);
// do something with result
}
}
不幸的是,Alien 类不提供 mungeString() 方法,并且没有设计为继承。有没有办法避免每次需要处理字符串列表时创建两个临时文件?例如,将我的输入通过管道传输到 Reader 流并从 Writer 流读回它,而不实际接触文件系统?
我是 Java 新手,如果答案对于专业人士来说是显而易见的,请原谅我。
最佳答案
您可以通过使用任何/所有这些轻松避免临时文件:
示例 mungeString()
方法可能如下所示:
public String mungeString(String input) {
StringWriter writer = new StringWriter();
alienObj.munge(new StringReader(input), writer));
return writer.toString();
}
关于java - 当 Java 方法需要 Reader/Writer 参数时,是否可以避免使用临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433265/