我正在我的Java程序中尝试从带有wget的FTP服务器下载一个XML文件。我得等到下载完成。
String command = "WGET -O "
+props.getProperty("xmlFolder")+""+
+ rs.getString("software")
+ ".xml ftp://"+props.getProperty("ftpUser")
+":"+props.getProperty("ftpPasswort")+"@"+rs.getString("xmlPfad");
System.out.println(command);
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
System.out.println("downloaded!");如果没有waitfor(),它就能很好地工作,但是有了这个功能,它在下载2-3 MB之后就会停止运行。有什么建议吗?
发布于 2013-10-14 12:57:03
你试过对wget使用-安静的选项吗?
编辑1:
管道的写入侧(子进程)可能已满。
编辑2:
来自openjdk-6-src-b20-21_jun_2010
在jdk/src/solaris/native/java/lang/UNIXProcess_md.c中(至少对于UNIX系统),我们可以看到Java如何启动一个新的子进程,以及它如何使用管道将stdout和stderr从子进程(wget)重定向到父进程(Java)。
https://stackoverflow.com/questions/19360431
复制相似问题