📄 如何正确地应用runtime类调用程序.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)http://www.cn-java.com/target/book.php?news_id=508 -->
<HTML><HEAD><TITLE>如何正确地应用Runtime类调用程序</TITLE>
<SCRIPT language=JavaScript src="如何正确地应用Runtime类调用程序.files/windows.js"></SCRIPT>
<SCRIPT language=javascript>
function js_callpage(htmlurl) {
var newwin=window.open(htmlurl,"newwin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=550,height=450");
}
</SCRIPT>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
OVERFLOW-X: hidden; OVERFLOW: scroll
}
.DEK {
Z-INDEX: 200; VISIBILITY: hidden; POSITION: absolute
}
</STYLE>
<LINK href="如何正确地应用Runtime类调用程序.files/style.css" type=text/css rel=STYLESHEET>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY oncontextmenu="return true" link=#00000 leftMargin=0 topMargin=0>
<SCRIPT language=JavaScript>
function MM_o(selObj){
window.open(selObj.options[selObj.selectedIndex].value);}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
if(selObj.options[selObj.selectedIndex].value!=''){
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
}
</SCRIPT>
<TABLE height=84 cellSpacing=0 cellPadding=0 width=760 align=center
bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD bgColor=#000000 rowSpan=2><IMG height=65
src="如何正确地应用Runtime类调用程序.files/heard1.jpg" width=110></TD>
<TD bgColor=#000000 rowSpan=2><IMG height=65
src="如何正确地应用Runtime类调用程序.files/heard2.jpg" width=142></TD>
<TD borderColor=#0 width=615 bgColor=#000000><!-- <a href='http://www.cn-java.com/community/' target='_blank'><IMG SRC='http://www.cn-java.com/images/bar.gif' BORDER='0'></a> -->
<DIV align=center>
<OBJECT
codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0
height=60 width=460 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="movie" VALUE="../images/aws-banner-04.swf"><PARAM NAME="quality" VALUE="high">
<embed src="../images/aws-banner-04.swf"
quality=high
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="460" height="60">
</embed> </OBJECT></DIV></TD></TD></TR>
<TR>
<TD vAlign=center width=615 bgColor=#000000 height=17><A
href="http://www.cn-java.com:7001/roller" target=_self><FONT
face="Arial, Helvetica, sans-serif" color=red
size=3><B>BLOG</B></FONT></A><FONT face="Arial, Helvetica, sans-serif"
color=#cc9900 size=3>|</FONT> <FONT face="Arial, Helvetica, sans-serif"><A
href="http://www.cn-java.com/tologin.php" target=_self><FONT color=#ffffff
size=2>登录</FONT></A> <FONT color=#cc9900 size=3>|</FONT><A
href="http://www.cn-java.com/user_step1.php" target=_self><FONT
color=#ffffff size=2>免费注册</FONT></A><FONT color=#cc9900
size=3>|</FONT><FONT face="Arial, Helvetica, sans-serif"><A
href="http://www.actionsoft.com.cn/" target=_self><FONT color=#ffffff
size=2><B><FONT color=#ffcc00>炎黄盈动</FONT></B></FONT></A></FONT><FONT
color=#cc9900 size=3><FONT color=#cc9900 size=3>|</FONT></FONT><A
href="http://www.cn-java.com/community" target=_self><FONT color=#ffffff
size=2>Java社区</FONT></A><FONT color=#cc9900 size=3>|</FONT><FONT
face="Arial, Helvetica, sans-serif"><A
href="http://www.cn-java.com/javaforum" target=_self><B><FONT
color=#ffcc00 size=2>新版论坛</FONT></B></A><FONT color=#cc9900
size=3>|</FONT><FONT face="Arial, Helvetica, sans-serif"><A
href="http://www.cn-java.com/opensource" target=_self><FONT color=#ffffff
size=2>开源项目</FONT></A><FONT color=#cc9900 size=3>|</FONT> <FONT
face="Arial, Helvetica, sans-serif"><A
href="http://www.cn-java.com/index.php" target=_self><FONT color=#ffffff
size=2>主页</FONT></A> </FONT> </FONT> <SELECT
class=homepage onchange="MM_jumpMenu('parent',this,1)" name=select>
<OPTION selected>站点导航</OPTION> <OPTION
value=http://www.cn-java.com>+-首页</OPTION> <OPTION
value=http://www.cn-java.com/community/>+Java社区</OPTION> <OPTION
value=http://www.cn-java.com/opensource/>+开源项目</OPTION> <OPTION
value=http://www.cn-java.com/eshop/>+JAVA图书</OPTION>
<OPTION>+-新手入门</OPTION> <OPTION
value=http://www.cn-java.com/index_focus.php?kind=31&title=配置java环境>|-配置JAVA环境</OPTION>
<OPTION
value=http://www.cn-java.com/index_news_kind.php?title=新手入门/JAVA语言基础&kind=32&group=>|-JAVA语言基础</OPTION>
<OPTION
value=http://www.cn-java.com/index_download_kind.php?title=开发工具与教程&kind=&group=01>|-开发工具与教程下载</OPTION>
<OPTION
value=http://www.cn-java.com/index_download_kind.php?title=程序代码&kind=&group=02>|-程序代码下载</OPTION>
<OPTION
value=http://www.cn-java.com/index_news_kind.php?title=新手入门/实用技巧&kind=34>|-实用技巧</OPTION>
<OPTION value=http://www.cn-java.com/index_faq_center.php>|-FAQ
abc</OPTION> <OPTION
value=http://www.cn-java.com/index_resource_kind.php>|-学习资源</OPTION>
<OPTION>+专题技术</OPTION> <OPTION
value=http://www.cn-java.com/index_focus.php?kind=12&title=Java线程>|-JAVA线程</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=20&title=Socket编程>|-Socket编程</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=37&title=应用服务器>|-应用服务器</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=38&title=WebService>|-Web
Service</OPTION> <OPTION
value=http://www.cn-java.com/index_focus.php?kind=21&title=J2EE>|-J2EE</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=17&title=EJB专题>|-EJB专题</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=14&title=JAVA与XML>|-JAVA与XML</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=16&title=Servlet与JSP>|-Servlet与JSP</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=15&title=Applet与Swing>|-Applet与Swing</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=13&title=数据库专题>|-数据库专题</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=22&title=JavaMail>|-JavaMail</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=18&title=Java智能卡>|-Java智能卡</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=35&title=J2ME>|-J2ME</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=19&title=WAP应用技术>|-WAP应用技术</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=04&title=Java认证考试>|-Java认证考试</OPTION>
<OPTION
value=http://www.cn-java.com/index_focus.php?kind=36&title=设计模式>|-设计模式</OPTION>
<OPTION value=http://www.cn-java.com/qikan/list.php>+电子期刊</OPTION>
<OPTION>+会员管理</OPTION> <OPTION
value=http://www.cn-java.com/index_user_center.php>|-会员管理中心</OPTION>
<OPTION value=http://www.cn-java.com/postMain.php>|-我的文章中心</OPTION>
<OPTION value=http://www.cn-java.com/webteam/>|-JWT成员</OPTION></SELECT>
</FONT></FONT></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR bgColor=#000099>
<TD align=middle width=769 colSpan=2>
<P align=left><FONT color=#ffffff>当前位置:CN-JAVA/参考书籍</FONT>
</P></TD></TR></TBODY></TABLE>
<DIV class=dek id=dek></DIV>
<SCRIPT type=text/javascript>
<!--
Xoffset=-20; // 可调整
Yoffset= 20; // 可调整
var nav,old,iex=(document.all),yyy=-1000;
if(navigator.appName=="Netscape"){(document.layers)?nav=true:old=true;}
if(!old){
var skn=(nav)?document.dek:dek.style;
if(nav)document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=get_mouse;
}
function popup(msg,bak){
var content="<TABLE WIDTH=300 BORDER=1 BORDERCOLOR=black CELLPADDING=2 CELLSPACING=0 "+
"BGCOLOR="+bak+"><TD ALIGN=left><FONT COLOR=black SIZE=2>"+msg+"</FONT></TD></TABLE>";
if(old){alert(msg);return;}
else{yyy=Yoffset;
if(nav){skn.document.write(content);skn.document.close();skn.visibility="visible"}
if(iex){document.all("dek").innerHTML=content;skn.visibility="visible"}
}
}
function get_mouse(e){
var x=(nav)?e.pageX:event.x+document.body.scrollLeft;skn.left=x+Xoffset;
var y=(nav)?e.pageY:event.y+document.body.scrollTop;skn.top=y+yyy;
}
function kill(){
if(!old){yyy=-1000;skn.visibility="hidden";}
}
//-->
</SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width="97%" align=center bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD vAlign=top colSpan=3 height=69>
<P> </P>
<UL><FONT face="Arial, Helvetica, sans-serif" color=#336699
size=3><B><FONT color=#000000>如何正确地应用Runtime类调用程序
</FONT></B></FONT><FONT color=gray size=1>访问量1456次</FONT> <FONT
face="Arial, Helvetica, sans-serif" color=#336699 size=3>
<HR align=left width="100%" noShade>
</FONT></UL></TD>
<TR>
<TD vAlign=top width="4%"><FONT face="Arial, Helvetica, sans-serif"
color=#336699 size=3><BR><FONT color=#000000 size=2></FONT></FONT></TD>
<TD vAlign=top width="79%">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD>
<P><FONT face="Arial, Helvetica, sans-serif" color=#336699
size=3><FONT face="Arial, Helvetica, sans-serif" color=#336699
size=3>
<P><IMG height=162 src="" width=120></P></FONT><FONT color=#000000
size=2><BR></FONT><FONT face="Arial, Helvetica, sans-serif"
color=#336699 size=3><FONT color=#000000
size=2>用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式:
<BR>... <BR>Process process = Runtime.getRuntime().exec(".\\p.exe");
<BR>process.waitfor( ); <BR>...
<BR>在上面的程序中,第一行的“.\\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。
<BR>但在windows平台上,如果处理不当,有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况:
<BR>1、执行DOS的内部命令
<BR>如果要执行一条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虚拟机则会报运行时错误。前一种方法要保证程序的可移植性,需要在程序中读取运行的操作系统平台,以调用不同的命令解释器。后一种方法则不需要做更多的处理。
<BR>2、打开一个不可执行的文件 <BR>打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。
以打开一个word文档a.doc文件为例,Java中可以有以下两种写法: <BR>exec("start .\\a.doc");
<BR>exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe
.\\a.doc"); <BR>显然,前一种方法更为简捷方便。 <BR>3、执行一个有标准输出的DOS可执行程序
<BR>在windows平台上,运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭,从而导致Java应用程序阻塞在waitfor(
)。导致该现象的一个可能的原因是,该可执行程序的标准输出比较多,而运行窗口的标准输出缓冲区不够大。解决的办法是,利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出,在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下:
<BR>... <BR>String ls_1; <BR>Process process =
Runtime.getRuntime().exec("cmd /c dir \\windows");
<BR>BufferedReader bufferedReader = new BufferedReader( \ <BR>new
InputStreamReader(process.getInputStream()); <BR>while (
(ls_1=bufferedReader.readLine()) != null)
<BR>System.out.println(ls_1); <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -