利用Apache commons exec 实现指定应用打开对应文件

在实际工作中,我们有时候需要指定某一个应用,打开某一个文件。比如用播放器打开一个MP3音乐文件,用记事本打开一个文本文件。不过有的应用需要一些额外的参数,在具体使用的时候要注意。

package test.ffm83.commons.exec;

import org.apache.commons.exec.CommandLine;

importorg.apache.commons.exec.DefaultExecutor;

importorg.apache.commons.exec.ExecuteWatchdog;

importorg.apache.commons.exec.PumpStreamHandler;

importorg.apache.commons.io.output.ByteArrayOutputStream;

/**

* 通过commonsexec指定某一个应用打开某一个文件,比如用写字本打开txt文件

*@author 范芳铭

*/

public class EasyExecFile {

publicstatic void main(String[] args) {

EasyExecFileexec = new EasyExecFile();

exec.notepadReadFile("d:/ffm83/ffm83.txt");

}

publicvoid notepadReadFile(String filePath) {

Stringcommand = "notepad.exe " + filePath;

try{

ByteArrayOutputStreamoutputStream = new ByteArrayOutputStream();

ByteArrayOutputStreamerrorStream = new ByteArrayOutputStream();

//命令行处理

CommandLinecommandline = CommandLine.parse(command);

//进行执行体

DefaultExecutorexec = new DefaultExecutor();

exec.setExitValues(null);

//利用监视狗来设置超时

ExecuteWatchdogwatchdog = new ExecuteWatchdog(60000);

exec.setWatchdog(watchdog);

PumpStreamHandlerstreamHandler = new PumpStreamHandler(

outputStream,errorStream);

exec.setStreamHandler(streamHandler);

exec.execute(commandline);//执行

Stringout = outputStream.toString("gbk");

Stringerror = errorStream.toString("gbk");

System.out.println(out);

System.err.println(error);

}catch (Exception e) {

e.printStackTrace();

}

}

}

运行之后,打开了对应的txt文件。将文件关闭之后,进程结束。

时间: 2024-10-08 00:25:55

利用Apache commons exec 实现指定应用打开对应文件的相关文章

Apache commons exec 简介和简单ping命令方法调用实现

Apache commonsexec提供一些常用的方法用来执行外部进程.Apache commons exec库提供了监视狗Watchdog来设监视进程的执行超时,同时也还实现了同步和异步功能. Apache commonsexec涉及到多线程,比如新启动一个进程,Java中需要再开三个线程来处理进程的三个数据流,分别是标准输入,标准输出和错误输出. 需要使用该功能需要引入commons-exec-1.3.jar包,目前最新的版本为1.3版本. 在日常工作和生活中,我们经常需要用到网络,网络有时

Java执行外部程序(Apache Commons Exec)

之前使用Runtime.getRuntime().exec调用外部程序,在Tomcat下会有当前线程一直等待的现象.当时为了解决这个问题,使用新建线程接收外部程序的输出信息,详情请看博客http://blog.csdn.net/accountwcx/article/details/46785437. 后来在网上找到开源的Java调用外部程序类库Apache Commons Exce,这个类库提供非阻塞方法调用外部程序. 官方网址 http://commons.apache.org/proper/

Java运行外部程序(Apache Commons Exec)

之前使用Runtime.getRuntime().exec调用外部程序.在Tomcat下会有当前线程一直等待的现象. 当时为了解决问题,使用新建线程接收外部程序的输出信息.详情请看博客http://blog.csdn.net/accountwcx/article/details/46785437. 后来在网上找到开源的Java调用外部程序类库Apache Commons Exce,这个类库提供非堵塞方法调用外部程序. 官方网址 http://commons.apache.org/proper/c

利用apache commons组件实现WEB应用跨多数据库

1.前言 在一些多数据库的环境中,有时候应用系统需要同时访问多个数据库,在流行的spring+hibernate等架构中,涉及要修改和调整的内容会比较多:如果直接用jdbc,那么代码里就要充斥很多的连接.关闭数据库.以及从数据库中进行循环取结果的代码,感觉总是不够优化. 利用apachecommons 组件下的DBCP,dbUtils也能够编写相对比较优雅一点的代码. 本文主要提供更思路和方法,代码存在不够优化,架构存在不够清晰的情况,请辩证的看. WEB应用涉及的东西有点多,写起来也挺繁琐的.

利用Apache commons net 包实现简单的POP3邮件

Apache commons net中,对邮件的处理是非常强悍的,因此可以自己做一些邮件方面的工作.搭建邮件服务器的事情相对比较麻烦,我们还是直接利用现成的邮件服务器来使用,比如通过QQ邮箱收一些邮件. 在使用这个之前,要确保自己有一个邮箱,并且知道这个邮箱的POP3服务协议地址,以及这个邮箱对应的用户名和密码. 利用net 包实现简单的POP3邮件代码如下: package test.ffm83.commons.net.mail; import java.io.BufferedReader;

Java 利用Apache Commons Net 实现 FTP文件上传下载

package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Comparator;

Apache Commons Exec 工具包的使用

在没有使用这个工具包之前 我都手写代码去执行linux命令的,因为自己写代码去执行linux返回的信息不全,因为写得很简单只是调用没有用线程去等待信息的返回,也没有实现失效时间,后来想自己实现但是在无意间找到了这个工具包,能实现我的需求,当时很兴奋. commons exec下载路径 版本下载1.3的版本即可,其实也只有一个版本可下载 1.简单的命令执行 public static void execLinuxCommand(String command){ if(StringUtils.isE

org.apache.tomcat.util.net.NioEndpoint,打开的文件过多

错误信息: 27-Mar-2019 04:20:20.430 严重 [http-nio-8100-Acceptor-0] org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed java.io.IOException: 打开的文件过多 at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocket

Apache commons beanutils简介和使用

在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写经常是枯燥乏味令人厌烦的.但当有些时候我么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来简化解决这个问题. 目前最新的版本是1.9. 在日常的开发中,下面类似的代码应该是非常的眼熟. DynaActionForm daf =(DynaActionForm)form ;