如何使用ProcessBuilder在Java中运行大型输出程序?
我正在尝试在java程序中运行fff.exe。 -fff.exe算法:如何使用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的输
$ 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中所述的代码。。。可能是日食吗?