当前位置:  技术问答>java相关

java中使用系统命令

    来源: 互联网  发布时间:2015-10-13

    本文导语:  在java中能否使用系统命令,比如dir,cd,del等等,如何用,请以dir为为例 | 黄小宇 欧洋   01-5-10 下午 02:57:22 --------------------------------------------------------------------------------   用Java编写应用时...

在java中能否使用系统命令,比如dir,cd,del等等,如何用,请以dir为为例

|
黄小宇 欧洋  
01-5-10 下午 02:57:22

--------------------------------------------------------------------------------
 

用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( ); 
... 



    
 
 

您可能感兴趣的文章:

  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java怎样实现 运行dos命令行的命令或者windows的程序
  • Saloris系统下,如何使用java调用setenv命令和source命令????
  • windows命令行中java和javac、javap使用详解(java编译命令)
  • java程序在linux运行,要用Runtime.exec()执行外部命令,可外部命令中关于文件操作的路径都很长,如何使用相对路径.在线等待
  • 请java高手,为我解释一下这个命令是干什么的?《java核心技术2》
  • 运行JAVA命令错误
  • 我用JDK中的javac命令编译一个test.java。系统提示不能打开test.java该文件!!!
  • 如何使用java这个命令?
  • 关于JAVA调用linux命令 生成密钥对的问题
  • JAVA开发的软件系统的系统帮助文件该怎么做,有什么工具吗? iis7站长之家
  • 我要生成java 的文档在dos 下用什么命令.
  • 我在执行javac命令的时候没有问题,但是在执行java命令的时候却报如下错误
  • 哪位高手知道java怎么执行liunx的命令?
  • java命令执行类文件时不在bin的目录下出现Exception in thread "main" java.lang.NoClassDefFoundError:
  • java中如何执行dos命令,如文件删除等(时间紧急)
  • 关于jre命令替换为java
  • Java程序中如何执行系统命令?
  • 用 java 命令运行 .class 出错,怎么办
  • 怎样用Java调用window命令或启动其它程序?
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • MySocketServer.java 使用或覆盖一个不鼓励使用的API???
  • java将类序列化并存储到mysql(使用hibernate)
  • JAVA中不赞成使用(Deprecated)的方法是否可以使用
  • 各位使用过JAVA的朋友们!JAVA好用吗?它有向VC那样的集成开发环境吗?
  • java 可以使用 可是javac不可以使用。老兄帮帮忙
  • 哪位知道如何用JAVA进行图形文件的缩放? 是使用JAVA2D 或是有第三方的软件?
  • java堆栈类使用实例(java中stack的使用方法)
  • env查看环境变量,JAVA_HOME明明在里面,但使用nutch时还是提示JAVA_HOME not set?
  • 如何使用linux下的java编译器????
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁知道哪里有用java开发的管理信息系统软件(如:图书馆管理系统,人事部管理系统)的代码?
  • unix下用java.util.Date取系统时间比直接在系统下用date命令查看系统时间早整整一个小时
  • JAVA开发的软件系统的系统帮助文件该怎么做,有什么工具吗?
  • Linux文件系统监控的Java类库 inotify-java
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • 开发的java工程系统运行在linex上,现在想监控这个系统的运行情况
  • 请教如何搭建能够运行JAVA的最精简Linux桌面系统
  • 便携版 Java 系统运行环境 jPortable
  • Java开源网店系统 SHOP++
  • Java消息系统 BBMS
  • Java操作系统 JNode
  • 请教各位高手一个简单的问题:在JAVA 中如何才能取得一些系统信息?
  • 用java开发MIS系统是合适?
  • Java 版本控制系统 SourceJammer
  • 用linux,java做嵌入式系统!!!
  • java有没有调用系统时间的方法?谢谢!
  • Java 计算机代数系统 MathEclipse
  • Java的Webmail系统 MiniG
  • Java论坛系统 mvnForum
  • Java的内容管理系统 jspxcms
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,