在java中包装linux过滤器

时间:2011-11-09 08:38:57

标签: java io pipe

我想编写一个JUnit测试,确保我们自己实现的XML规范化工作就像“xmllint --c14n”一样。

    ProcessBuilder pb = new ProcessBuilder("xmllint", "--c14n", "-");
    Process p = pb.start();

如何使用测试文件提供流程并获取与unix管道相似的输出结果&过滤器?

1 个答案:

答案 0 :(得分:1)

使用Java 7,您可以使用ProcessBuilder.redirectInput(java.io.File)方法:

ProcessBuilder pb = new ProcessBuilder( ... );
pb.redirectInput("/path/to/testFile.txt");
Process p = pb.start();

使用Java 6,您需要自己使用I / O流。

import org.apache.commons.io.IOUtils;

FileInputStream testFile = ...
OutputStream processInput = p.getOutputStream();
IOUtils.copy(testFile, processInput);

InputStream processOutput = p.getInputStream();
// Either parse this, or IOUtils.copy it to a file and do a diff of some kind.