Java youtube dl转换;C:\";至;“C”;设置保存位置时

Java youtube dl转换;C:\";至;“C”;设置保存位置时,java,swing,youtube-dl,Java,Swing,Youtube Dl,我正在为的Windows exe版本创建基于Java的GUI。 自述文件的输出模板部分说,-o可用于在下载时设置保存位置和文件名。 当我通过命令行使用该程序时,我可以使用youtube-dl.exe-o“C:\Users\\Videos\%(title)s.%(ext)s”将下载位置设置为正常,并将其正常下载到指定的文件夹中。 但是,当我通过Java调用流程时,使用ProcessBuilder如下所示: output = "-o \"" + save_path + "\\%(title)s.%(

我正在为的Windows exe版本创建基于Java的GUI。
自述文件的输出模板部分说,
-o
可用于在下载时设置保存位置和文件名。
当我通过命令行使用该程序时,我可以使用
youtube-dl.exe-o“C:\Users\\Videos\%(title)s.%(ext)s”
将下载位置设置为正常,并将其正常下载到指定的文件夹中。
但是,当我通过Java调用流程时,使用
ProcessBuilder
如下所示:

output = "-o \"" + save_path + "\\%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\\youtube-dl.exe", output, url.getText()).start();
我一直得到以下输出:

-o "C:\Users\nightstalker\Videos\youtube-dl\%(title)s.%(ext)s"
Thread Start
[youtube] wnc77S-g0qQ: Downloading webpage
[youtube] wnc77S-g0qQ: Extracting video information
[youtube] wnc77S-g0qQ: Downloading js player en_US-vfljL8ofl
[youtube] wnc77S-g0qQ: Downloading DASH manifest
[download] Destination:  C#\Users\nightstalker\Videos\youtube-dl\Some Video.mp4
这就是
save\u路径
的外观

File save_path = new File("C:\\Users\\"+System.getProperty("user.name")+"\\Videos\\youtube-dl");
这基本上创建了一个名为
C\Users\nightstapper\Videos\youtube dl
的文件夹,并继续在那里下载。
有什么原因吗?

我将避开格式问题,希望能为您提供一个仍然有效的答案

ProcessBuilder允许您按如下方式设置工作目录:

output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();
资料来源:

您可以将ProcessBuilder上的目录()设置为**C:\Users\\Videos**,如下所示,而不是将整个路径放入传递到youtube dl的-o选项中:

output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();

我将避开格式问题,并希望提供一个仍然适用于您的答案

ProcessBuilder允许您按如下方式设置工作目录:

output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();
资料来源:

您可以将ProcessBuilder上的目录()设置为**C:\Users\\Videos**,如下所示,而不是将整个路径放入传递到youtube dl的-o选项中:

output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();


save\u path
看起来像什么?和/或之前是否以某种方式进行了处理?@Marvin请检查更新的问题,因此如果您输出
save_path
output
,哈希值是否已经存在,还是仅在youtube dl中转换?使用
youtube dl
转换。输出中的第一行是正在打印的
输出
变量。
保存路径
是什么样子的?和/或之前是否以某种方式进行了处理?@Marvin请检查更新的问题,因此如果您输出
save_path
output
,哈希值是否已经存在,还是仅在youtube dl中转换?使用
youtube dl
转换。输出中的第一行是正在打印的
输出
变量。
youtube dl
的问题是它将开始直接下载到保存它的文件夹中。因此,此方法将只更改工作目录,而不保存
youtube dl
的路径。不过,让我试试。你是不是被这个Windows特有的文件名编码错误咬到了:你的答案很完美。感谢您向我介绍
ProcessBuilder
。完全取消了
-o
参数,只需使用
ProcessBuilder的
directory()
选项。非常感谢!好东西。我很高兴能帮上忙。唐纳德,来解释你的不满。我无法修复我不知道的东西。我解决了将-o开关及其值在单个参数中传递给进程的问题。这可能是你的问题。
youtube dl
的问题是它将开始直接下载到保存它的文件夹中。因此,此方法将只更改工作目录,而不保存
youtube dl
的路径。不过,让我试试。你是不是被这个Windows特有的文件名编码错误咬到了:你的答案很完美。感谢您向我介绍
ProcessBuilder
。完全取消了
-o
参数,只需使用
ProcessBuilder的
directory()
选项。非常感谢!好东西。我很高兴能帮上忙。唐纳德,来解释你的不满。我无法修复我不知道的东西。我解决了将-o开关及其值在单个参数中传递给进程的问题。这可能是你的问题。