我想运行一些unix/shell命令Java并处理输出.我用过getRuntime.exec(),但它没有为某些命令提供正确的输出ls directory_path/*.tar.gz.对于那个命令,我的程序没有给出任何输出,但它给出了错误说法No such file or directory.但是相同的命令在命令提示符下提供正确的输出.
有没有其他方法可以在Java中执行包含通配符的命令?
有没有其他方法可以在Java中执行包含通配符的命令?
就在这里.
您的代码中存在三个潜在问题:
假设您想要查看外部命令的输出,您需要处理它产生的输出,并自己打印.
按照我在这里提供的示例:
*如果你天真地经历,那么shell的扩展是行不通的Runtime.exec.你必须/bin/bash明确地经历.
如果您尝试列出directory_path/*.tar.gz您应该知道的内容(如果您不是以a开头/)directory_path将相对于当前工作目录进行解析.首先尝试给出绝对路径以确保它有效,然后尝试弄清楚为什么它找不到相对路径.
这是一个应该有效的完整示例:
Process proc = new ProcessBuilder("/bin/bash", "-c",
"ls /.../directory_path/*.tar.gz").start();
Reader reader = new InputStreamReader(proc.getInputStream());
int ch;
while ((ch = reader.read()) != -1)
System.out.print((char) ch);
reader.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2669 次 |
| 最近记录: |