还有其他方法可以执行包含Java通配符的命令吗?
就在这里。
您的代码中存在三个潜在的问题:
- 假设您想查看外部命令的输出,则需要照顾它产生的输出并自己打印。
请遵循我在此处提供的示例:
* [如何使一个Java程序同时打印out.println()和err.println()语句?](https://stackoverflow.com/questions/3754841/how-to-make-a-java-program-to-print-both-out-println-and-err-println-)
*
如果您天真地通过,则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();


