我正在尝试在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后停滞不前。有什么建议?
答案 0 :(得分:3)
您是否尝试过使用--quiet选项进行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)