首页 > 解决方案 > 如何使用 Java 通过 Mac OS 终端运行命令

问题描述

我是一名高中生,正在从事一个项目,该项目会将视频从 YouTube 链接转换为 MP3 并下载。但是,YouTube格式的视频下载和转换的方式是通过Mac OS终端使用YouTube-dl。

这是我放入终端的内容:

youtube-dl -f bestvideo+bestaudio \"ytsearch:{https://www.youtube.com/watch?v=5X-Mrc2l1d0}\"

这适用于终端,但是当我尝试使用时:

Runtime.getRuntime().exec("cd /Users/poppa/Desktop/IA Vids");

并且有一个错误说"No such file or directory"

我遇到的另一个问题是运行从 Java 输入到终端的代码。如果有帮助,我正在使用 IntelliJ IDEA。谢谢你!

标签: javayoutubemp3

解决方案


如果cd表示change directory(并且不是可执行文件的名称),那么即使正确执行,它也几乎肯定不会生效。生成的进程exec()将有一个工作目录,并且可以更改 - 但该更改只会影响生成的进程。

此外,在参数 toexec()中有空格本质上是有问题的。exec()不是外壳,您将无法通过使用引号等外壳机制来保护字符串不被空格分割相反,您需要自己将命令拆分为参数,知道拆分的位置,然后使用exec()以 aString[]作为输入的形式。也就是说,您自己将参数拆分为字符串数组,而不是依赖于exec()(错误地)为您完成。

Runtime.exec()困难重重,需要非常小心的处理。我在这里写了很多关于这个主题的文章:

http://kevinboone.me/exec.html


推荐阅读