用Runtime在linux下执行命令生成文件,怎么找不到生成的文件?急

时间:2021-04-29 21:31:31
try{
            System.out.println("aaaaa");
            Runtime runn = Runtime.getRuntime();
            Process p = runn.exec("rrdtool dump /var/rrd/snmp/8/memorySize.rrd > /var/rrd/snmp/8/memorySize.xml");                             
            System.out.println("bbbb");
        }catch(Exception e){
                System.out.println("Throws Exception in Runtime !");
            }
程序中“aaaaa”"bbbb"均能打出来,并无异常,但我找不到生成的xml文件????这应该怎么解决????
(在程序中若执行runn.exec("rm /var/rrd/snmp/8/test.xml");则可将test.xml删除。)

9 个解决方案

#1


执行的是:
Process p = runn.exec("rrdtool dump /var/safetyms/rrd/snmp/8/memorySize.rrd > memorySize.xml");

#2


各位大侠,帮帮小弟;版主Help me

#3


问题就一个:你的命令是错误的,你试一试重新给一个完整的命令,我怀疑没有找到你给的命令,就是说你的path不对!!你可以给一个完整的路径试一试。。

#4


首先先谢谢你!!
我指定完整命令路径后,还是不可生成目标文件(/var/safetyms/xml/snmp/8/memorySize.xml);但直接在命令窗口敲入命令就可生成目标文件;我感到很是费解。请问:你考虑这会是怎么回事?????感谢ing
 Process p = runn.exec("/usr/bin/rrdtool dump /var/safetyms/rrd/snmp/8/memorySize.rrd > /var/safetyms/xml/snmp/8/memorySize.xml");
p.destroy();

#5


加一句,  p.waitFor();

#6


肯定有问题,你不妨将运行结果的输出流和error流显示出来看看。 p.getInputStream()和p.getErrorStream().

#7


基于安全的原因,java不可以使用系统级的重定向功能,也就是说不能使用>

#8


加上p.waitFor();仍然没有输出目标文件。
将运行结果的输出流和error流显示出来,观察:error流为null(也就是没错了);getInputStream输出了大量的数据,正是我将rrd文件转换成的xml文件内容,证明命令也执行了;
但是目标文件xml没有找到呀???
tehcon大侠,“java不可以使用系统级的重定向功能”--那怎么能得到输出的文件呢?????
"dump 文件名.rrd > 文件名.xml"是rrdtool工具的命令。在此,我代表我本人感谢大家!!:),谢谢

#9


我先得到运行结果的输出流,然后将输出流的内容存到目标文件,问题解决了!:),但执行速度好像有点慢,各位大侠是否还有别的好方法?

#1


执行的是:
Process p = runn.exec("rrdtool dump /var/safetyms/rrd/snmp/8/memorySize.rrd > memorySize.xml");

#2


各位大侠,帮帮小弟;版主Help me

#3


问题就一个:你的命令是错误的,你试一试重新给一个完整的命令,我怀疑没有找到你给的命令,就是说你的path不对!!你可以给一个完整的路径试一试。。

#4


首先先谢谢你!!
我指定完整命令路径后,还是不可生成目标文件(/var/safetyms/xml/snmp/8/memorySize.xml);但直接在命令窗口敲入命令就可生成目标文件;我感到很是费解。请问:你考虑这会是怎么回事?????感谢ing
 Process p = runn.exec("/usr/bin/rrdtool dump /var/safetyms/rrd/snmp/8/memorySize.rrd > /var/safetyms/xml/snmp/8/memorySize.xml");
p.destroy();

#5


加一句,  p.waitFor();

#6


肯定有问题,你不妨将运行结果的输出流和error流显示出来看看。 p.getInputStream()和p.getErrorStream().

#7


基于安全的原因,java不可以使用系统级的重定向功能,也就是说不能使用>

#8


加上p.waitFor();仍然没有输出目标文件。
将运行结果的输出流和error流显示出来,观察:error流为null(也就是没错了);getInputStream输出了大量的数据,正是我将rrd文件转换成的xml文件内容,证明命令也执行了;
但是目标文件xml没有找到呀???
tehcon大侠,“java不可以使用系统级的重定向功能”--那怎么能得到输出的文件呢?????
"dump 文件名.rrd > 文件名.xml"是rrdtool工具的命令。在此,我代表我本人感谢大家!!:),谢谢

#9


我先得到运行结果的输出流,然后将输出流的内容存到目标文件,问题解决了!:),但执行速度好像有点慢,各位大侠是否还有别的好方法?