您的位置:首页 > 运维架构 > Apache

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

2014-12-30 15:10 127 查看
在实际工作中,我们有时候需要指定某一个应用,打开某一个文件。比如用播放器打开一个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文件。将文件关闭之后,进程结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: