2

我正在尝试在我的 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 后卡住。有什么建议么?

4

1 回答 1

3

您是否尝试过为 wget 使用 --quiet 选项?

编辑1:

管道的写入端(子进程)可能已满。

编辑2:

来自 openjdk-6-src-b20-21_jun_2010

在 jdk/src/solaris/native/java/lang/UNIXProcess_md.c(至少对于 UNIX 系统)中,我们可以看到 Java 如何启动新的子进程以及它如何使用管道从子进程(wget)重定向 stdout 和 stderr到父进程(Java)

于 2013-10-14T12:57:03.630 回答