Java 替换参数中的空格以运行命令

Java 替换参数中的空格以运行命令,java,ffmpeg,replaceall,Java,Ffmpeg,Replaceall,我正在使用Runtime.getRuntime.exec(String)来剪切一些带有ffmpeg的歌曲。 但是当我的歌有一个带有空格的名字时,它就不起作用了 因此,在我剪切歌曲之前,我想用“\”替换歌曲中的所有空白 我做到了: String in = directory+songs.get(i); String out = directory+"trimed_"+songs.get(i); in.replaceAll(" "," \\ "); out.replaceAll(" ", "\\ "

我正在使用Runtime.getRuntime.exec(String)来剪切一些带有ffmpeg的歌曲。 但是当我的歌有一个带有空格的名字时,它就不起作用了

因此,在我剪切歌曲之前,我想用“\”替换歌曲中的所有空白

我做到了:

String in = directory+songs.get(i);
String out = directory+"trimed_"+songs.get(i);
in.replaceAll(" "," \\ ");
out.replaceAll(" ", "\\ ");
String str = "ffmpeg -t 1 -i "+in+" -vcodec copy "+out;
Runtime.getRuntime().exec(str);
但当我打印str时,它根本不能代替任何东西,我是不是遗漏了什么

更新:我尝试了下面给出的每个想法,但没有找到解决问题的方法。因此,我将空格替换为“u”,效果很好

试试看

String in = directory+songs.get(i);
String out = directory+"trimed_"+songs.get(i);

/* in = in.replaceAll("\\s","\\\\ ");
   out = out.replaceAll("\\s","\\\\ "); 
*/

in = "\"" + in + "\"";
out = "\"" + out + "\"";

String str = "ffmpeg -t 1 -i " + in + " -vcodec copy " + out;
Runtime.getRuntime().exec(str);
System.out.println("Command executed " + str);
注意:我自己测试了这段代码,它工作正常。
如果仍然不工作,则通过从日志中复制
str
手动执行命令,并跟踪错误

,而不替换输入和输出的所有函数?仍然不工作,现在没有任何空格的歌曲不再工作。例如,如果歌曲名有空格,str等于:ffmpeg-t 1-i“/家庭/克里斯/音乐/舞蹈/ M.4A”-VCODEC复制“/home /克里斯/音乐/ TrimeDe,然后跳舞。M4A”我尝试了你的最后一次更新,它不工作,STR仍然等于:FFMPEG-T 1 /家/克里斯/音乐/然后跳舞。M4A- VCODEC复制/家庭/克里斯/音乐/ TrimeDeDe舞曲。M4A空白空间没有被替换!现在尝试它应该替换<代码>“与
”\“