Runtime的一点问题

时间:2022-01-30 20:21:46
本来准备做个备份数据库的代码,然后就先试了一下看Runtime.getRuntime().exec("")能不能用,结果一试就杯具了.....先测试了一下Runtime.getRuntime().exec("ipconfig");然后顺利得到了结果,然后我又测试了下Runtime.getRuntime().exec("HELP");但是只从input里得到了“有关某个命令的详细信息,请键入 HELP 命令名”这样的东西,相当于下面的实际部分就完全没得到。然后又试了一下Runtime.getRuntime().exec("del c:\\a.txt");然后就抛出了IO异常。总之麻烦各位帮帮忙~~

Exception in thread "main" java.io.IOException: Cannot run program "del": CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at AAA.main(AAA.java:39)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
... 4 more

13 个解决方案

#1


del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");

#2


上代码。

#3


del不是一个可执行文件,他是cmd的一个命令而已
用 cmd /c del 试试

#4


学习

#5


引用 3 楼 hendy 的回复:
del不是一个可执行文件,他是cmd的一个命令而已
 用 cmd /c del 试试


应该是这样的。
del是一个dos命令。而ipconfig应该是%PATH%中的一个可执行程序。
但是我觉得就算这样也不至于抛异常的。

#6


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");


学习~~~~

#7


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

 应该是
 Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");


楼主,试试上面的

#8


del不是window的应用程序,编译的时候就通不过了.
Runtime.getRuntime().exec不能当作window下的dos来用,删除文件最好用io来操作.

#9


学习~~~~

#10


Runtime类 
每一个java程序都有一个单一的Runtime类的实例。提供了应用程序与应用程序正在运行的环境之间的接口。
可以根据Runtime对象去获取虚拟机的内存。
Runtime a = Runtime.getRuntime();
System.out.println(a.freeMemory());
System.out.println(a.totalMemory());

Process类 是一个抽象类
Runtime a = Runtime.getRuntime();
try{

    a.exec("notepad"); //exec是Runtime类的一个方法,会打开一个文本
    a.exec("javac b.java"); //可以用来编译java文件
    Process c =a.exec("java b"); //把a.exec设置为一个进程  执行b.class 子进程
    InputStream d=c.getInputStream();    //获得执行结果b.class 执行结果的输出  getInputStream() 是process的方法
    ....

}catch(Exception e)
{ e.printStackTrace(); }

Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");



#11


这是我看孙鑫java视频 用手敲屏幕代码弄来的。。。。。

#12


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");

同意

#13


先谢谢各位了...试了一下,是“cmd /c del c:\\1.txt”没错,意思就是说如果是可执行程序,并且在系统变量path里有配的话就可以直接写命令,如果不是可执行程序,比如cmd命令之类的,就要在前面加上cmd /c

我又试了一下,看来就是这样了...请大家原谅我“不求甚解”的态度...
总之谢谢各位了!!特别是10楼的“手敲屏幕代码”兄弟,太感谢了,我直接化杯具为洗具了...

#1


del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");

#2


上代码。

#3


del不是一个可执行文件,他是cmd的一个命令而已
用 cmd /c del 试试

#4


学习

#5


引用 3 楼 hendy 的回复:
del不是一个可执行文件,他是cmd的一个命令而已
 用 cmd /c del 试试


应该是这样的。
del是一个dos命令。而ipconfig应该是%PATH%中的一个可执行程序。
但是我觉得就算这样也不至于抛异常的。

#6


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");


学习~~~~

#7


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

 应该是
 Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");


楼主,试试上面的

#8


del不是window的应用程序,编译的时候就通不过了.
Runtime.getRuntime().exec不能当作window下的dos来用,删除文件最好用io来操作.

#9


学习~~~~

#10


Runtime类 
每一个java程序都有一个单一的Runtime类的实例。提供了应用程序与应用程序正在运行的环境之间的接口。
可以根据Runtime对象去获取虚拟机的内存。
Runtime a = Runtime.getRuntime();
System.out.println(a.freeMemory());
System.out.println(a.totalMemory());

Process类 是一个抽象类
Runtime a = Runtime.getRuntime();
try{

    a.exec("notepad"); //exec是Runtime类的一个方法,会打开一个文本
    a.exec("javac b.java"); //可以用来编译java文件
    Process c =a.exec("java b"); //把a.exec设置为一个进程  执行b.class 子进程
    InputStream d=c.getInputStream();    //获得执行结果b.class 执行结果的输出  getInputStream() 是process的方法
    ....

}catch(Exception e)
{ e.printStackTrace(); }

Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");



#11


这是我看孙鑫java视频 用手敲屏幕代码弄来的。。。。。

#12


引用 1 楼 chdw 的回复:
del不是一个exe,所以它不可以运行的

应该是
Process p = Runtime.getRuntime().exec("cmd /c del c:\\1.txt");

同意

#13


先谢谢各位了...试了一下,是“cmd /c del c:\\1.txt”没错,意思就是说如果是可执行程序,并且在系统变量path里有配的话就可以直接写命令,如果不是可执行程序,比如cmd命令之类的,就要在前面加上cmd /c

我又试了一下,看来就是这样了...请大家原谅我“不求甚解”的态度...
总之谢谢各位了!!特别是10楼的“手敲屏幕代码”兄弟,太感谢了,我直接化杯具为洗具了...