java - 如何使用 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。谢谢你!
解决方案
如果cd
表示change directory
(并且不是可执行文件的名称),那么即使正确执行,它也几乎肯定不会生效。生成的进程exec()
将有一个工作目录,并且可以更改 - 但该更改只会影响生成的进程。
此外,在参数 toexec()
中有空格本质上是有问题的。exec()
不是外壳,您将无法通过使用引号等外壳机制来保护字符串不被空格分割。相反,您需要自己将命令拆分为参数,知道拆分的位置,然后使用exec()
以 aString[]
作为输入的形式。也就是说,您自己将参数拆分为字符串数组,而不是依赖于exec()
(错误地)为您完成。
Runtime.exec()
困难重重,需要非常小心的处理。我在这里写了很多关于这个主题的文章:
推荐阅读
- c# - 使用 CollectionView 时 Xamarin 应用程序在 android 上崩溃
- python - 打包一个需要非python包的python项目
- git - 如何干净地删除包含 .gitignore 并可能包含临时忽略文件的目录?
- c++ - 如何解压缩霍夫曼编码文件?
- assembly - 打印可被输入 1 - 9 整除的 0 - 255 的所有数字
- scala - 过滤数据框中的日期范围
- r - 制作 ggplot 0,0 XY 坐标以与背景图像的特定点重合
- sql - 删除不起作用的地方
- c# - 如何使用 C# 在 Excel .xlsx 文件中基于行列组合在单元格中输入值?
- javascript - 我如何上传多个图像文件并在通过javascript上传后相应地查看它们,就像我在代码中所做的那样?