知识大全 使用Runtime.exec重定向本地程序调用

Posted 命令

篇首语:少年辛苦终身事,莫向光阴惰寸功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Runtime.exec重定向本地程序调用相关的知识,希望对你有一定的参考价值。

Java技巧:使用Runtime.exec重定向本地程序调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Java具有使用Runtime exec对本地程序调用进行重定向的能力 但是用重定向或者管道进行命令调用将会出错 解决这一问题的办法是通过命令shell运行命令 在Java中调用本地程序会破坏平台独立性规则 但是经常需要这么做才行     以下是一个简单类的范例 展示了在Unix下运行ls命令的情形     import java io BufferedInputStream;  import java io IOException;    public class ExecLs      static public void main(String[] args)    String cmd = ls      try    Process ps = Runtime getRuntime() exec(cmds);   System out print(loadStream(ps getInputStream()));   System err print(loadStream(ps getErrorStream()));   catch(IOException ioe)    ioe printStackTrace();           // read an input stream into a String   static String loadStream(InputStream in) throws IOException    int ptr = ;   in = new BufferedInputStream(in);   StringBuffer buffer = new StringBuffer();   while( (ptr = in read()) != )    buffer append((char)ptr);      return buffer toString();                        上述代码中重要的部分是exec方法和命令字符串ls 本程序将输出运行目录下的列表细节     那么 如果你想重定向这些细节内容到文件该怎么办?这一命令行的输入应该写成ls > FILE 但是当你将cmd变量改变成这样的话 运行就会出错 如下     /bin/ls: >: No such file or directory  /bin/ls: FILE: No such file or directory     出错的原因在于额外的参数被直接传送到了ls命令而不是送到实际的命令行 解决这一问题的办法是将cmd串弄成一个字符串数组 并且将你想运行的程序传送到命令shell     因此 将cmd行改成下面的样子      String[] cmd = sh c ls > FILE ;     你将得到一个名为FILE的文件 里面是目录列表 c参数是告诉它读取随后的字符串 而最后的参数是你要运行的脚本     在这种情况下 管道也运行良好 所以你可以把命令改成下面的方式     String[] cmd = /bin/sh c /bin/ls | grep d > FILE ;     这种形式将给你一个名为FILE的文件 里面是ls条目中包含d的条目 给出sh和ls的全路径有利于提供你的程序的安全性     虽然使用Runtime exec不是创建独立于平台的Java的最佳方式 但是有些时候是必要的 使用这种重定向技术有助于走出Runtime exec的限制    cha138/Article/program/Java/hx/201311/25922

相关参考

知识大全 c#中重定向windows控制台程序的输出信息

  这个问题来自社区提问代码保留一份用来以后回答      usingSystem;usingSystemComponentModel;usingSystemWindowsForms;namespac

知识大全 Java中调用本地代码

Java中调用本地代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java中调用dll中本地

知识大全 php快速url重写实例

  以上的版本才能使用继承了上一个版本的快速重定向的特点(单独类全部使用静态调用)增添了一个很重要的功能和属性可以调用其他url中的模块了也使得模块与模块间或页面与页面间的函数简化共享得以实现  ht

知识大全 在对标准流进行重定向

Java技巧:在对标准流进行重定向  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  流重定向演示应

知识大全 已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢

已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢?搜索结果重定向人们常常用简称或自己熟悉的称谓,来搜索某一人物或事物,而它们往往不符合百科标准词

知识大全 如何实现301重定向

PHP教程:如何实现301重定向  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh

知识大全 C#程序调用外部程序

C#程序调用外部程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*  * 编程语言Visu

知识大全 ASP.NET页面的重定向

ASP.NET页面的重定向  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先ResponseR

知识大全 Java标准输出重定向到GUI

Java标准输出重定向到GUI  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实现输出从控制台到

知识大全 调用.net程序集中的方法

  虽然BiztalkServer提供了众多的内置功能然而在一些情况下可能还需要调用程序集中的函数因为在Net程序集中可以非常方便地调用WebService访问数据库另一方面有些函数是程序集中已经写好