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

如何使用ProcessBuilder在Java中运行大型输出程序?,java,processbuilder,large-data,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输出行的子集; -exe的输出由循环生成; --一次一行 --也就是说,不是一次生成的 -fff.exe的输

我正在尝试在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输出行的子集; -exe的输出由循环生成; --一次一行 --也就是说,不是一次生成的 -fff.exe的输出太大,无法保存在内存中

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

made it here
Done
并且目标文件为空;我做错了什么?hhh.csv应该是fff.exe的输出

另外,我是否正确使用了ProcessBuilder?我的意思是运行fff.exe,参数ggg.txt 12345输出到一个名为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" );

可能与这个bug有关?虽然在不知道fff.exe的实际功能的情况下很难帮助您。您可能想尝试组合一个更简单的示例,使用basic命令。@Kevin伪代码够了吗?经过编辑后反映了这一点,因为我没有投票结束!问题是,我并不认为您的Java代码有什么问题,除了我上面链接的bug之外。这意味着问题要么在fff.exe中,要么在两者之间的交互中,这对我们来说是很难调试的。我们可以复制和粘贴的东西最好,因为你发布的东西没有明显的问题。fff.exe在cygwin中运行良好,这是否意味着这就是bug?我不是在使用bug中所述的代码。。。可能是日食吗?