JAVA如何调用WINDOWS命令行
用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编程中,有时我们需要...总的来说,Java调用Windows命令行主要依赖Runtime和Process类,需要注意命令的正确构造、处理输出和资源管理。在实际开发中,应确保代码的可移植性和健壮性,尤其是在涉及跨平台操作时。
以下是如何使用Java调用Windows命令行的详细步骤和注意事项: 1. **调用外部程序** - 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行程序。例如: ```java Process process = Runtime....
总的来说,Java调用命令行是通过`Runtime`和`ProcessBuilder`类实现的,它们提供了一种与操作系统交互的方式。理解并熟练掌握这些知识点对于开发需要系统级操作的Java应用至关重要。在实际项目中,务必注意处理好...
java使用windows命令行获取返回内容
**Java调用命令行** 在Java中,我们可以使用`Runtime`类或`ProcessBuilder`类来执行命令行操作。 1. **使用Runtime.exec()** `Runtime.getRuntime().exec(command)` 是最基础的方法,用于执行指定的系统命令。`...
### Java调用命令行启动Tomcat #### 一、引言 在开发环境中,我们经常需要启动Tomcat服务器来运行Java Web应用。通常情况下,我们会通过双击`startup.bat`或`catalina.sh`脚本来启动Tomcat。然而,在某些特定场景...
本项目"基于Java的FTP客户端设计与实现"旨在利用Java语言构建一个能够连接到FTP服务器,实现登录、文件上传和下载等功能的客户端程序。 首先,要实现FTP客户端,我们需要理解FTP的工作原理。FTP基于TCP/IP协议,...
综上所述,Java调用Windows可执行文件是一个常见的需求,可以通过Runtime或ProcessBuilder类实现。理解并正确使用这些功能,可以帮助开发者实现更复杂的跨平台集成需求。在具体应用中,应考虑安全性、错误处理和资源...
总结来说,Java调用Windows批处理文件是通过`Runtime.exec()`方法实现的,需要正确指定批处理文件的路径,并且注意处理程序的输出和错误流。在实际开发中,应考虑异常处理、资源管理和进程同步等问题,确保程序的...
要实现Java调用本地的远程桌面连接,通常会使用`Runtime.getRuntime().exec()`方法来执行系统命令。这个方法允许我们在Java程序中执行任何可执行文件或命令行脚本。例如,我们可以构造一个包含用户名、密码和目标...
总之,Java cmd命令行模拟工具是Java开发中的一个重要辅助手段,它允许开发者在Java应用中方便地调用操作系统命令,极大地扩展了Java程序的功能。无论是简单的文件操作还是复杂的系统交互,都能借助这些工具轻松实现...
3. COM接口:对于Windows环境,ISIGHT支持COM(Component Object Model),用户可以通过VBA或其他支持COM的语言(如Visual Basic或C++)来调用ISIGHT的命令行功能。 集成商业软件命令行时,你需要了解目标软件的...
总结,通过Java调用Windows CMD命令,我们可以方便地执行系统级任务,实现与操作系统的交互。`FileProcessInShell.java`可能就是这样一个例子,它演示了如何在Java程序中执行和处理CMD命令的输出。在实际开发中,...
总的来说,Windows下使用Java调用FFmpeg进行视频处理涉及了Java的进程管理和FFmpeg的命令行接口知识。通过合理的编程实践和理解FFmpeg的参数设置,我们可以实现丰富的视频处理功能。记得在实际开发中,要根据项目...
总的来说,Java调用Windows应用程序主要依赖于`Runtime`类和`ProcessBuilder`类,它们提供了灵活的方式来启动和管理操作系统级别的进程。了解并熟练掌握这两种方式,对于编写跨平台的Java应用至关重要。同时,需要...
标题 "exchange/powershell,Java调用powershell开通邮箱" 暗示了这是一个关于使用Java编程语言调用PowerShell脚本在Exchange服务器上创建邮箱的教程或项目。Exchange是微软提供的一款企业级电子邮件服务器软件,而...