java - 当 Java 方法需要 Reader/Writer 参数时,是否可以避免使用临时文件?

标签 java stream

我正在从外部库调用一个方法,其签名如下(简化):

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/

相关文章:

java - 是否有一种有效且更快的方法来重写 TreeSet 中使用的compareTo()方法

Java 图形 - 游戏的各个阶段

java - 如何关闭Java Input Streams?

java - 解析包含嵌套标签的 xml

java - 在调用父类(super class)的构造函数之前,有什么方法可以在 Java 中初始化子类的成员变量?

nginx - 使用 nginx ssl 直通的反向代理

java - 如何转换/ fork Kafka 流并将其发送到特定主题?

c++ - C++中的平台无关/dev/null

Node.js 将流复制到文件中而不消耗

java - 将整数移动零次有什么影响?