I am facing a weird issue with executing a system command from JAVA code.
Actually i want to get the Mac OSX system information from my JAVA App.
For that im using
Runtime.getRuntime().exec("system_profiler -detailLevel full");
This is working fine.If i print the output,it is cool.
But i want to write this information to a plist file for future use.For that im using the -xml argument of system_profiler.like,
String cmd = "system_profiler -detailLevel full -xml > "+System.getProperty( "user.home" )+"/sysinfo.plist";
Process p = Runtime.getRuntime().exec(cmd);
Basically this should create a plist file in the current users home directory.
But this seems to be not writing anything to file.
Am i missing something here ?
My Java is more than rusty, so please be gentle. 😉
Runtime.exec()does not automatically use the shell to execute the command you passed, so the IO redirection is not doing anything.If you just use:
Then the string will be tokenized into:
Which also wouldn’t work, because
-conly expects a single argument.Try this instead:
Of course, you could also just read the output of your
Processinstance usingProcess.getInputStream()and write that into the file you want; thus skip the shell, IO redirection, etc. altogether.