- 浏览: 1332837 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过。基本原理是,首先通过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,然后调用run.exec(cmd) 另启一个进程来执行命令(cmd为要执行的命令)。
一、运行一个可执行程序
执行一个.exe的文件,或通过已安装的软件打开一个特定格式的文件,如word、chm或mp3等等。
1. 在window下可以直接执行一个.exe文件,如执行我在F盘下的tomcat安装文件,将命令写为:
String cmd = "F:\\apache-tomcat-6.0.20.exe";
2. 打开一个word文档。如果系统已经安装了office应用程序,就可以通过调用word的可执行程序来打开一个word文档:
String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
当然这样写有点麻烦,我们想打开一个word文档时只要双击就可以了,用不着去找WINWORD.EXE。要是打开每一种格式的文件都得去找它的可执行程 序,那可累死了,我们可以通过下面的代码,打开任意一个已知格式的文件(只要安装的打开这种文件格式的软件),相当于用鼠标双击一个文件的图标:
String cmd = "cmd.exe /c start F:\\test.doc";
我用C写了一个进程操作的小例子,放在 linux 下编译出的可执行文件叫“fork_wait”,然后把我的java文件编译成TestRunTime.class后扔到 linux 上,在控制台执行 java TestRunTime 命令,TestRunTime 和 fork_wait 程序均运行成功。
String cmd = "./fork_wait";
二、执行一个有标准输出的系统命令
通过调用进程的 getInputStream() 方法,可以获得执行命令的标准输出。在 windows 的cmd控制台窗口和 linux 控制台执行系统名利的格式是一样的,只是输入的命令不同而已。
如要执行windows控制台中ping命令,可写为:String cmd = "ping www.baidu.com";
执行linux的ls命令,可写为:String cmd = "ls -l";
如果要执行一个带参数的命令,可使用 String 数组形式,如:
String[] cmd=new String[3];
cmd[0]="/bin/sh";
cmd[1]="-c";
cmd[2]="ls -l ./";
下面是我写的小例子:
- package com.why.RunTime;
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class TestRunTime {
- public static void main(String[] args) {
- //windows
- // String cmd = "F:\\apache-tomcat-6.0.20.exe";
- // String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
- // String cmd = "cmd.exe /c start F:\\test.doc";
- String cmd = "ping www.baidu.com" ;
- //linux
- // String cmd = "./fork_wait";
- // String cmd = "ls -l";
- // String[] cmd=new String[3];
- // cmd[0]="/bin/sh";
- // cmd[1]="-c";
- // cmd[2]="ls -l ./";
- Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象
- try {
- Process p = run.exec(cmd);// 启动另一个进程来执行命令
- BufferedInputStream in = new BufferedInputStream(p.getInputStream());
- BufferedReader inBr = new BufferedReader( new InputStreamReader(in));
- String lineStr;
- while ((lineStr = inBr.readLine()) != null )
- //获得命令执行后在控制台的输出信息
- System.out.println(lineStr);// 打印输出信息
- //检查命令是否执行失败。
- if (p.waitFor() != 0 ) {
- if (p.exitValue() == 1 ) //p.exitValue()==0表示正常结束,1:非正常结束
- System.err.println("命令执行失败!" );
- }
- inBr.close();
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
}
发表评论
-
J2ME 的优化措施
2012-07-11 02:15 1170常见的性能瓶颈:1.文件的读写和网络的操作2.CPU3.内存4 ... -
JAVA缓存 - Cache类
2011-09-28 11:04 4606JAVA缓存有两种: 一、文件缓存,是指把数据存储在磁盘上 ... -
Java注释(Annotation)详解
2011-03-31 18:22 2397注释:在一个类中可以有多个,类似于一个类可以有多个实例; ... -
Java去除字符串中的空格、回车、换行符、制表符
2011-02-15 11:06 3553本方法采用的是java的正则表达式 import jav ... -
线程池编程
2011-01-23 21:02 1101线程池编程 -
设计模式:Java语言中的应用
2011-01-23 20:59 1315设计模式:Java语言中的应用 -
java用了中间缓存变量
2011-01-23 18:37 2387Java语法、语言特性与机制 2011-01-22 19:1 ... -
Java集合总结
2011-01-19 11:16 3817Set:不区分元素的顺序,不允许出现重复的值list:区分元素 ... -
java.util.current的主要方法简介
2011-01-08 22:18 3433JDK5中增加了Doug Lea的并发库,这一引进给java线 ... -
线程池
2011-01-08 21:03 2067对每个客户都分配一个新的工作线程。当工作线程与客户通信结束,这 ... -
SimpleDateFormat
2010-12-10 16:11 1360With SimpleDateFo ... -
使用 XStream 在 JavaBean 与 XML/JSON 之间相互转换
2010-12-10 14:24 1553XML 和 JSON 是当今常用的两种数据描述与传输的格式,特 ... -
Linux上JDK的 安装和卸载 详细 (转)
2010-11-27 15:48 1922安装 1. 去http://java.sun.com ... -
java 路径问题
2010-11-26 16:21 12951.JSP/Servlet中获得当前应用的相对路径和绝对路径 ... -
对synchronized(this)的一些理解
2010-11-25 23:41 1022一、当两个并发线程访问同一个对象object中的这个synch ... -
Externalizable
2010-11-20 22:41 1357被Serializable接口声明的类的对象的内容都将被序列化 ... -
Java实现文件拷贝的4种方法(转)
2010-11-15 12:33 1246... -
Java内省和反射机制三步曲之 - 内省
2010-11-11 12:15 1341经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java ... -
java内省机制
2010-11-11 11:10 2394反射 (Reflection):反射就是让你可以通 ... -
Design Pattern: Thread-Specific Storage 模式
2010-11-11 00:00 1208无论如何,要编写一个多执行绪安全(thread-safe)的程 ...
相关推荐
使用 Java 调用其他.exe 可执行程序时,需要注意以下几点: * 需要确保调用其他.exe 可执行程序的权限,避免出现权限不足的错误。 * 需要确保调用其他.exe 可执行程序的路径正确,避免出现文件不存在的错误。 * ...
- 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行程序。例如: ```java Process process = Runtime.getRuntime().exec(".\\p.exe"); ``` - `exec()`方法返回一个Process对象,可以...
在Linux环境下,Java程序可以通过Runtime类或者ProcessBuilder类来调用外部的可执行程序。这个过程通常涉及以下几个关键步骤: 1. **获取运行时环境**: 首先,你需要通过`Runtime.getRuntime()`方法创建一个...
### Java调用应用程序和Dos中的命令 在Java编程中,有时候我们需要执行一些操作系统级别的任务,例如启动一个外部程序、执行一些系统命令等。这通常可以通过Java的`Runtime`类实现,尤其是通过`Runtime.exec()`方法...
- **安全性**:直接执行外部命令可能会引入安全风险,特别是当命令字符串包含来自不可信源的数据时。 - **资源管理**:确保适当地关闭所有打开的流,并且在不再需要时销毁进程。 - **异常处理**:处理可能出现的`...
在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows系统的可执行文件或批处理文件来执行特定任务。这通常通过Java的Runtime类或ProcessBuilder类实现。这两个类允许我们构建命令行指令并执行它们,...
`Runtime.getRuntime().exec()`允许我们创建一个子进程来执行指定的命令或可执行程序。这个过程可以分为几个关键点来理解: 1. **执行DOS内部命令**: 当你需要执行DOS内部命令(如`dir`, `copy`, `del`等)时,有...
总结,Java调用系统命令“ping”涉及到对操作系统接口的使用,以及对输入/输出流的处理。在Spring框架下,我们可以通过依赖注入简化代码并提高可维护性。实践过程中需要注意处理可能的异常,并确保正确关闭所有打开...
总之,Java调用DOS命令主要依赖`Runtime`和`Process`类,需要注意命令格式、标准输出处理以及资源管理等问题,以确保命令的正确执行和程序的稳定运行。在实际开发中,应充分考虑各种情况,以保证代码的健壮性和跨...
下面将详细介绍如何使用Java语言中的`Runtime`类及其子类`Process`来调用二进制可执行程序: 1. **创建命令参数数组**: ```java String[] args = new String[2]; args[0] = "ls"; args[1] = "-l"; ``` 这里...
这两个类提供了运行外部进程的能力,从而允许Java程序调用系统命令。 在给定的描述中,虽然没有提供具体的信息,但我们可以推测这篇博文可能是博主Qindongliang分享的一个实用工具,可能包括如何在Java代码中构建和...
总结来说,通过Java调用FFmpeg和Mencoder进行视频格式转换,需要理解这两个工具的命令行语法,以及如何在Java中执行外部进程。此过程涉及到文件类型的检查、预处理转换(如果必要)、最终的格式转换以及错误处理,...
在Java中执行外部可执行文件或批处理脚本是一种常见的需求,尤其是在需要调用系统级别的工具或者与操作系统进行交互时。通过Java的`Runtime`类及其提供的方法,我们可以方便地实现这一功能。本文将详细介绍如何在...
Runtime 类提供了 exec() 方法,用于指示 Java 虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的 Process 对象实例。Process 对象可以控制该子进程的执行或获取该子进程的信息。 执行DOS内部命令...
总结来说,Java项目打包发布为可执行程序涉及的关键步骤包括:创建JAR文件、选择适当的打包工具(如exe4j或jsmooth)、配置工具以指定主类、JRE路径等,以及可能的JRE瘦身。这些方法可以帮助开发者将Java应用程序...
本篇将详细介绍如何使用Java的打包工具,特别是"jar"命令,来将Java程序转换为可执行的JAR(Java Archive)文件。 标题提及的“把Java程序编译成可执行文件的工具”主要指的是Java的JAR打包工具。JAR文件是一种特殊...
虽然通常建议尽量避免直接调用外部命令,以增强程序的可移植性和安全性,但在某些特定情况下,如需要调用特定系统工具或执行安装程序等,这些技术仍然是非常有用的。通过合理利用`Runtime`类、`ProcessBuilder`类和...
`JAVA_HOME`应指向Java安装目录,`PATH`应包含`%JAVA_HOME%\bin`,这样系统才能找到`java.exe`可执行文件。 批处理文件的运行方式很简单,只需双击该文件或者在命令行窗口中输入文件路径即可。例如,如果批处理文件...
** Maven 可执行程序文档与Java环境** Maven是一个强大的项目管理和构建工具,在Java开发中广泛应用。它通过读取项目的配置文件(pom.xml),自动管理项目的依赖关系,构建工件(如JAR或WAR文件),并执行测试。在...
这个"JAVA100例之实例41 执行系统命令"就是专门针对这一需求的一个示例,它展示了如何在Java程序中调用和执行系统命令。 Java通过`Runtime`类和`ProcessBuilder`类提供了执行系统命令的能力。这两个类都可以用来...