我正在尝试使用qemu-img从Java代码创建磁盘空间,因此我实例化了进程和运行时类。当运行程序时,虽然我使用相同的机制进行类似的执行,但是它没有被执行,它工作正常。所以我想知道我是否想念这里。
StringBuilder commandBuilder = new StringBuilder("qemu-img create -f "+chosenStorageType+" ~/"+storageName+".img "+storageSize+"M");
System.out.println(commandBuilder);
String command = commandBuilder.toString();
System.out.println("this is the correct one: "+command);
System.out.println("Creating the image...");
Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
process = runtime.exec(command);
System.out.println("from process try..catch");
} catch (IOException e1) {
e1.printStackTrace();
System.out.println(e1.getMessage());
}finally{
System.out.println("from finally entry");
process.destroy();
}
输出如下:
qemu-img create -f raw ~/testSPACE.img 23.0M
this is the correct one: /qemu-img create -f raw ~/testSPACE.img 23.0M
Creating the image...
from process try..catch
from finally entry
但如果我转到目录,则不会创建该文件。
只是为了测试它,如果我将输出复制到终端,一切都像魅力一样。
答案 0 :(得分:1)
此处为波浪号(~
)
" ~/"+storageName+".img "
shell将解释为您的主目录。我会用真正的路径代替。
另请注意,您需要consuming the process stdout/err,并通过Process.waitFor()