我正在通过将一些字符串添加在一起来创建命令字符串。如果我调试我的应用程序并从变量中复制最终字符串,它将在终端中完美运行。如果尝试Runtime.getRuntime().exec(cmd1);
cmd1 是我的字符串,它不起作用,我得到错误 2(没有这样的文件或目录)。
我的代码如下所示:
String cmd1 = sPath + " \"" + files[i].getPath() + "\" \""
+ files[i].getPath().replace(".wav", "_L.wav") + "\" remix 1";
Process p1 = Runtime.getRuntime().exec(cmd1);
p1.waitFor();
最终的 cmd1 字符串是这样的:
/Users/Me/Downloads/sox-14.4.1/sox "/Users/Me/Desktop/DB/A1199/Klu a1.wav"
"/Users/Me/Desktop/DB/A1199/Klu a1_L.wav" remix 1
任何想法为什么我会收到此错误?我尝试将 sox 路径放在引号中,但它没有帮助。
好的,我试过这个:
String[] cmd1 = new String[4];
cmd1[0] = soxPath;
cmd1[1] = "'" + files[i].getPath() + "'";
cmd1[2] = "'" + files[i].getPath().replace(".wav", "_L.wav") + "'";
cmd1[3] = "remix 1";
ProcessBuilder builder = new ProcessBuilder(cmd1);
builder.redirectErrorStream(true);
System.out.println(builder.command().toString());
final Process p1 = builder.start();
copy(p1.getInputStream(), System.out);
p1.waitFor();
但我仍然得到相同的结果......命令在终端中工作,但 java 应用程序抛出一个错误:/Users/Me/NetBeansProjects/DataPrepare/sox/sox FAIL formats: can't open input file "/Users/Me/Desktop/DB/audio.wav"': No such file or directory