JAVA如何调用DOS命令
用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式:
...
Process process = Runtime.getRuntime().exec(".\\p.exe");
process.waitfor( );
...
在上面的程序中,第一行的“.\\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。
但在windows平台上,如果处理不当,有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况:
1、执行DOS的内部命令
如果要执行一条DOS内部命令,有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如,执行dir命令,在NT上, 可写成exec("cmd.exe /c dir"),在windows 95/98下,可写成“command.exe /c dir”,其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec("my_dir.bat")。如果仅仅写成exec("dir"),Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性,需要在程序中读取运行的操作系统平台,以调用不同的命令解释器。后一种方法则不需要做更多的处理。
2、打开一个不可执行的文件
打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。 以打开一个word文档a.doc文件为例,Java中可以有以下两种写法:
exec("start .\\a.doc");
exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc");
显然,前一种方法更为简捷方便。
3、执行一个有标准输出的DOS可执行程序
在windows平台上,运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭,从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是,该可执行程序的标准输出比较多,而运行窗口的标准输出缓冲区不够大。解决的办法是,利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出,在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下:
...
String ls_1;
Process process = Runtime.getRuntime().exec("cmd /c dir \\windows");
BufferedReader bufferedReader = new BufferedReader( \
new InputStreamReader(process.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);
process.waitfor( );
...
以上内容为转载~下面内容为原创!
今天在做客户端程序的自动更新,简单描述一下,就是从服务器上将更新包下载下来,然后在本地解压缩,最后删掉~功能很简单~
但是问题出在使用JAVA的ZIP模块做文件的解压缩不是想象的那么简单,资源需要释放,一个不小心就没有办法删除掉原有ZIP文件了~资源的占用确实是个大问题,但是好在,客户端程序更新完是要重启的,一切都烟消云散了~对于删除不掉ZIP文件的问题,我也流氓一下~用DEL硬删除~此处一定要注意!
Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc");
这样的调用是没有问题~
Process process = Runtime.getRuntime().exec("del f:\\aaa.doc");
这样写是不可能对的~
记录一下,警告一下后人!
分享到:
相关推荐
当我们需要在Java程序中执行系统命令,比如运行一个批处理脚本(.bat文件)时,`Runtime`类或者其扩展类`ProcessBuilder`就派上了用场。下面我们将深入探讨如何使用`Runtime`执行bat脚本,并了解相关知识点。 1. **...
在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如运行Linux命令或shell脚本。`Runtime`类是Java标准库提供的一种机制,允许我们在程序中执行操作系统命令。本文将深入探讨如何使用`...
在Java编程中,`Runtime.exec()`方法是一个非常实用的功能,它允许我们执行操作系统级别的命令。这篇博客"Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!"探讨了如何利用`Runtime.exec()`来...
`Runtime.exec()`是最为传统且简单的执行外部程序的方法。它可以启动一个新的进程,并返回一个代表该进程的`Process`对象。但是,这种方法在处理进程的输入/输出流时存在一定的局限性。 **代码示例** ```java ...
综上所述,"Android程序中(APK程序)执行Adb shell命令"涉及到利用Java的Runtime或ProcessBuilder类来调用系统shell,执行特定的命令。这个过程需要理解ADB的作用,以及如何在Android应用程序中安全地使用shell命令...
LabVIEW VISA Runtime是LabVIEW开发环境中的一部分,它包含了VISA的所有必需库和驱动,使得不依赖LabVIEW主应用程序的独立执行文件(.exe)也能使用VISA功能。这极大地扩展了VISA的应用范围,使得开发者无需在目标...
通过`getRuntime()`方法可以获得`Runtime`实例,然后调用其`exec()`方法执行命令。 ```java Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec("ls -l"); ``` 在这个例子中,`ls -l`是一个...
例如,以下代码展示了如何使用Runtime类执行"mkdir"命令创建一个新的目录: ```java Runtime runtime = Runtime.getRuntime(); try { Process process = runtime.exec("mkdir 新建目录"); int exitCode = process...
4. 运行编译命令,如`cmake --build . --config Release`来构建库。 一旦编译完成,您将得到一个包含GPU支持的ONNX Runtime库。这个版本的库文件名为"onnxruntime-linux-x64-gpu-1.3.0",表明它是为Linux平台的64位...
`Runtime.getRuntime().exec(String command)`是运行命令的最简单方式。这个方法接受一个字符串参数,该字符串是你要执行的命令。然而,这种方法不推荐用于复杂的命令,因为它不能处理命令行参数和重定向输入/输出...
8. **运行时环境**:确保目标机器上安装了兼容的JRE(Java Runtime Environment),因为JAR文件需要Java虚拟机来运行。 总结来说,可执行JAR文件是Java应用程序的分发形式,通过`MANIFEST.MF`指定主类并使用`java -...
通过ADB,可以在电脑上运行`adb shell`命令,将命令发送到连接的Android设备,并在设备的shell环境中执行。例如,你可以使用`adb shell ls`来查看设备的根目录下的文件。 2. **Runtime.exec()**:在Android应用程序...
`Runtime.getRuntime().exec()`方法可以用来执行shell命令,但需要注意的是,执行命令前必须确保应用已经获得了相应的系统权限,这可以通过在AndroidManifest.xml中声明`<uses-permission>`标签来实现。 例如,如果...
在这个例子中,`executeAdbCommand`方法接受一个ADB命令作为参数,然后通过`Runtime.getRuntime().exec()`来执行这个命令,并读取命令的输出。 要连接到手机,你需要确保手机已开启USB调试,并通过USB连接到电脑。...
当完成了一个项目的组态后,往往需要将该项目从组态计算机(也称为开发计算机)传送到运行计算机(Runtime PC),以便在实际生产环境中运行。本文将详细介绍如何在不同的情况下(如首次传输或项目更新后传输)将...
Onnxruntime是一个高性能的运行时环境,用于执行优化后的ONNX模型,ONNX(Open Neural Network Exchange)是一种开放的模型交换格式,支持多种深度学习框架。RapidOcr则是一款专门针对文字识别的工具,它结合了Onnx...
ONNX运行时(ONNX Runtime)是用于执行ONNX模型的高性能推理引擎。此次我们使用的安装包是`onnxruntime-1.2.0-cp36-cp36m-linux_armv7l.whl`,它是一个专为Python 3.6和ARMv7l处理器优化的预编译库。 首先,确保你...
在树莓派上部署yolov5-lite,我们通常会遇到计算能力不足的问题,这时onnxruntime(ONNX运行时)就显得尤为重要。ONNX(Open Neural Network Exchange)是一个开放的模型交换格式,支持跨框架的模型共享。onnx...
PHP Cli运行时 PHP运行时执行命令库安装安装此扩展的首选方法是通过 。 无论运行 php composer.phar require --prefer-dist johnitvn/cli-runtime "*"或添加 "johnitvn/cli-... 运行命令而不返回并显示输出 $ process -
这些库提供了API,让你能够在运行时请求Root权限,并在获得批准后执行shell命令。例如,使用SuperSU库,你可以调用`SuManager.requestSuPermissions()`来请求权限,然后在回调中处理结果。 4. **执行Shell命令**:...