我在从 JAVA 代码执行系统命令时遇到一个奇怪的问题。
其实我想得到Mac OSX
来自我的 JAVA 应用程序的系统信息。
为此,我正在使用
Runtime.getRuntime().exec("system_profiler -detailLevel full");
这工作正常。如果我打印输出,那就很酷了。
但我想将此信息写入plist
文件以供将来使用。为此,我使用 -xml 参数system_profiler
.like,
String cmd = "system_profiler -detailLevel full -xml > "+System.getProperty( "user.home" )+"/sysinfo.plist";
Process p = Runtime.getRuntime().exec(cmd);
基本上这应该在当前用户主目录中创建一个 plist 文件。
但这似乎没有向文件写入任何内容。
我在这里错过了什么吗?
我的 Java 已经生锈了,所以请温柔点。 ;-)
Runtime.exec()
不会自动使用 shell 执行您传递的命令,因此 IO 重定向没有执行任何操作。
-
如果你只是使用:
"/bin/sh -c system_profiler -detailLevel full > path/file.plist"
然后字符串将被标记为:
{ "/bin/sh", "-c", "system_profiler", "-detailLevel", "full", ">", "path/file.plist" }
这也行不通,因为-c
只期望一个参数。
试试这个:
String[] cmd = { "/bin/sh", "-c", "system_profiler -detailLevel full > path/file.plist" };
Process p = Runtime.getRuntime.exec(cmd);
当然,你也可以只读取你的输出Process
实例使用Process.getInputStream()
并将其写入您想要的文件中;因此完全跳过 shell、IO 重定向等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)