Java终端执行和代码执行命令生成的文件不一样?

我用终端执行 lame -b 16 /java/5/a.wav 
生成的是缩小的a.mp3文件 , 是正确的,
但是我用Java代码
Process p=run.exec("lame -b 16 /java/5/a.wav");
生成的文件是a.mp3 但是生成的也是a.mp3,但是好像是文本,不是mp3文件 而且是0kb
为什么?

源码

public static void main(String[] args) {
String localhost_dir = "";
Runtime run = null;
try {
run = Runtime.getRuntime();
//调用解码器来将wav文件转换为mp3文件
Process p=run.exec("lame /java/5/a.wav"); // lame 你的.wav文件

//释放进程
p.getOutputStream().close();
p.getInputStream().close();
p.getErrorStream().close();
p.waitFor();

} catch (Exception e) {
e.printStackTrace();
}finally{
//最后都要执行的语句
//run调用lame解码器最后释放内存
run.freeMemory();
}

}


汪汪一只猫
浏览 568回答 1
1回答

侃侃尔雅

p.waitFor(); 放 p.getOutputStream().close(); 之前试试
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java