如何使用ProcessBuilder在Java中运行大输出程序?

时间:2014-04-01 17:32:12

标签: java processbuilder large-data

我正在尝试在java程序中运行fff.exe - fff.exe算法:

$ run fff.exe ggg.txt 12345
while ggg has lines
    line = ggg.getline
    if line contains 12345:
        print.to.stdout( line )

- fff.exe逐行读取ggg.txt,输出ggg.txt中的一行子集;
- fff.exe的输出由循环生成;
---即。一次一行
---即。没有一次全部生成 - fff.exe的输出太大而无法保存在内存中

当我在main中运行以下代码时,输​​出为:

made it here
Done

,目标文件为空; 我做错了什么? hhh.csv应该是fff.exe的输出。

同样,我是否正确使用了ProcessBuilder?我的意思是运行带有参数ggg.txt 12345的fff.exe输出到名为hhh.csv的文件。

ProcessBuilder pb = new ProcessBuilder(
    "M:\\aaa\\bbb\\ccc\\ddd\\workspace\\fff.exe",
    "M:\\aaa\\bbb\\ccc\\ddd\\eee\\ggg.txt",
    "12345" );

try {
    System.out.println( "made it here!" );
    File destination = new File( "M:\\aaa\\bbb\\ccc\\ddd\\eee\\hhh.csv" );
    pb.redirectOutput( ProcessBuilder.Redirect.to( destination ) );
    Process p = pb.start();
    p.waitFor();
}

catch ( Exception e ) {
    System.out.println( e );
}

System.out.println( "Done" );

0 个答案:

没有答案