我将这个代码包含在一个方法中,当我通过main方法调用时,它运行得非常好,并通过wget为我下载所需的文件。我可以在项目目录中看到该文件。
同时当我将这个方法暴露在一个rest svc后面时,它将所需的url传递给方法,虽然它通过代码,但它似乎不会下载文件。 (在调试器模式下检查)。这是否意味着,它试图将其下载到其他地方或者在休息svc后面暴露的ProcessBuilder是一个问题吗?
Runtime rt = Runtime.getRuntime();
ProcessBuilder pb;
int exitVal = 0;
try {
pb = new ProcessBuilder("wget", "-O", "myFile.csv",myFileUrl);
pb.redirectErrorStream(true);
Process downloadFirst = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(downloadFirst.getInputStream()));
while (reader.readLine() != null) {}
exitVal = downloadFirst.waitFor();
LOG.info("Downloaded my file with exitValue:" + exitVal);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
正如@ MrSmith42所说,如果我在从其他服务部门打电话时指定完整路径,那就有用了。