wget文件下载ftp waitfor()挂起

时间:2013-10-14 12:37:09

标签: java

我正在尝试在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后停滞不前。有什么建议?

1 个答案:

答案 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)