我将这段代码包含在一个方法中,当我通过 main 方法调用该方法时,它运行得非常好,并通过 wget 为我下载所需的文件。我可以在我的项目目录中看到该文件。
同时,当我将这个方法暴露在一个 rest svc 后面时,它将所需的 url 传递给该方法,虽然它通过代码传递,但它似乎没有下载文件。(在调试器模式下检查)。这是否意味着,它试图在其他地方下载它,或者暴露在 rest 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();
}
正如@MrSmith42 所述,如果我在从其余服务调用时指定完整路径,它会起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句