`
zhaohaolin
  • 浏览: 1024658 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA中执行DOS命令分析

    博客分类:
  • JAVA
 
阅读更多

下面是一种比较典型的程序模式:
    ...
    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");
    这样写是不可能对的。

分享到:
评论
1 楼 seoltsubasa 2012-03-26  
你好,我有个问题想和你探讨一下。比如有些DOS命令,在DOS窗口下,我们输入一个命令,但是在该命令执行完之前会叫我们输入一些信息。当这些信息输入完以后,该条命令才能完成,那么在JAVA代码里面怎样来为输入这些信息提供一个接口呢?

相关推荐

    JAVA执行DOS命令分析

    在Java编程中,有时我们需要执行操作系统级别的任务,如运行DOS命令。这通常涉及到使用`Runtime`类的`exec()`方法。`Runtime.getRuntime().exec()`允许我们创建一个子进程来执行指定的命令或可执行程序。这个过程...

    java操作DOS命令

    Java操作DOS命令主要指的是通过Java程序调用操作系统(如Windows、Linux等)的命令行接口,执行系统级别的操作。这种技术在很多场景下都非常实用,例如自动化测试、系统管理或者进行一些系统级别的数据处理。下面...

    Java最全学习资料+面试题+DOS命令+设计模式+Excel技巧+java学习笔记

    在Java开发中,我们还会用到`javac`(编译Java源码)和`java`(运行编译后的类文件)等与Java相关的DOS命令。 4. **设计模式**:设计模式是软件工程中经过验证的解决方案模板,用于解决常见问题。Java开发者应该...

    常用DOS命令大全及其用法

    在现代操作系统中,虽然图形用户界面(GUI)已经占据了主导地位,但DOS命令仍然在某些场景下有着重要的应用,特别是在系统管理、网络诊断和自动化任务执行等方面。以下是一些常见的DOS命令及其用途: 1. **ping**:...

    J_Dos v2.0 (可以运行dos命令的工具 含vb6源代码)

    《J_Dos v2.0:运行DOS命令的实用工具及VB6源代码解析》 J_Dos v2.0 是一款专为用户设计的工具,它允许用户在Windows环境下执行DOS命令,并能够获取命令的返回值。相较于系统自带的命令提示符,J_Dos在处理汉字支持...

    java中ping命令ping工具类(循环ping)

    ping是一个DOS命令,一般用于检测网络通或不通 ,也叫时延,其值越大,速度越慢。 PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages ...

    Java模仿DOS界面(cmd程序) (Demo)

    在Java编程语言中,模拟DOS界面(也称为命令行接口或CMD程序)是一种常见的需求,特别是在进行系统级操作或者需要执行控制台命令时。这个Demo项目“Java模仿DOS界面(cmd程序)”旨在通过Java代码实现类似DOS窗口的...

    java自制DOS操作系统

    开发者需要编写解析器来识别并执行合法的DOS命令。 总的来说,这个Java自制的DOS操作系统项目是一个综合性的学习资源,涵盖了操作系统设计、文件系统、命令解析、Java I/O等多个领域。无论是对于专业开发人员还是...

    dos版qq (java源码)

    "DOS版QQ(Java源码)"是指一个特别的QQ客户端实现,它可以在DOS操作系统环境下运行,而非我们常见的图形用户界面版本。这个版本的QQ是通过编程语言Java编写的,利用了Java跨平台的特性,使得在DOS这种命令行界面下...

    java获取各进程的信息

    本示例展示了如何使用Sigar库来获取系统中各个进程的关键信息,包括PID、用户、启动时间、大小、所占内存、状态、运行时间、CPU使用率及命令等。这对于系统监控和故障排查具有重要意义。通过定时更新数据,可以实时...

    DOS命令的使用-常用

    虽然题目中的内容主要围绕Linux系统展开,但为了响应标题的要求,我们先简要介绍一些常用的DOS命令。 - **`dir`**: 显示指定目录下的文件列表。 - **`cd`**: 改变当前工作目录。 - **`md`** 或 **`mkdir`**: 创建新...

    C#写的java编译器

    描述中提到,这个编译器实际上是一个简单的文本编辑器,具备基本的文本处理能力,如dos命令的运行、字符串的拆分。这意味着它可以读取、编辑Java源代码,并且能够执行与操作系统交互的任务,比如在DOS环境下运行命令...

    动力节点老杜Java零基础教程课堂讲义分享

    - **Windows系统设置**:学习如何显示文件扩展名、常用DOS命令等基本操作。 - **文本编辑器安装与配置**:推荐使用如Notepad++等文本编辑器,安装并熟悉其使用方法。 - **快捷键**:掌握文本编辑器的常用快捷键,...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-029-Java语言概述-第一个程序-Java程序的执行流程.avi 北京动力节点-Java编程零基础教程-030-Java语言概述-重难点总结.avi 北京动力节点-Java编程零基础教程-031-Java基本语法-...

    Java截取视频画面

    本教程将详细讲解如何利用Java调用DOS命令来实现这一功能,特别关注在Windows 7 64位操作系统下的实践。由于我们并未在其他平台上进行测试,所以本方法可能不适用于所有操作系统。 首先,我们需要了解一个关键的...

    java 员工信息管理系统

    同时,为了实现清屏功能,可以调用DOS命令`cls`,或者使用Java的`java.lang.Runtime.exec()`方法执行系统命令。 3. **业务逻辑**:这是系统的核心部分,包含处理用户请求的各种业务规则。例如,当用户请求查询员工...

    自动抢票软件 java 控制台版本 含jar包

    此外,“文件里面包含有jar文件”,意味着这个软件已经编译为可执行的Java Archive(JAR)文件,用户可以直接通过命令行(如DOS命令)运行,无需安装额外的开发环境。 “java控制台版本”意味着该软件是通过控制台...

    动力节点Java基础301集_史上最全的Java基础教程

    此外,教程还涉及了Java的基础知识,如计算机组成、存储单位、路径分类、DOS命令、Java语言的发展历史、JDK、JRE、JVM之间的关系,以及Java程序的编写、编译、运行等。进一步深入,讲解了关键字、标识符、字面量、...

    java 实现视频上传

    通过执行特定的FFmpeg命令,可以从视频流中提取特定时间的图像。 最后,**视频播放**通常是前端的职责,但Java也可以提供一些支持。例如,你可以生成适应性播放的m3u8索引文件,使得客户端能够根据网络状况选择合适...

Global site tag (gtag.js) - Google Analytics