`
hellsing42
  • 浏览: 261725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

StreamGobbler方法

阅读更多
class StreamGobbler extends Thread {
  InputStream is;
  String type;
  
  StreamGobbler(InputStream is, String type) {
      this.is = is;
      this.type = type;
  }
  
  public void run() {
      try {
          InputStreamReader isr = new InputStreamReader(is);
          BufferedReader br = new BufferedReader(isr);
          String line=null;
          while ( (line = br.readLine()) != null)
              System.out.println(type + ">" + line);
      } catch (IOException ioe) {
          ioe.printStackTrace();
      }
  }
  // end StreamGobbler

调用:
			
			Process proc = Runtime.getRuntime().exec(moveCommand);
            //any error message?
            StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");
            // any output?
            StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");
            // kick them off
            errorGobbler.start();
            outputGobbler.start();
            // any error???
            int exitVal = proc.waitFor();
            String executeStatus = "";
            if(exitVal==0) executeStatus = "success..";
            if(exitVal==1) executeStatus = "failure....";
            
            System.out.print(executeStatus);
            

具体原来不知道是如何,但是效果是可以有效的监控Runtime.getRuntime.exec("")是否有效的执行完成,当执行完成后才继续执行下面的程序.希望有其中的原理
分享到:
评论

相关推荐

    ProcessRunner.zip

    它可能继承自`Thread`,重写`run()`方法,这样当子进程有输出时,`StreamGobbler`线程可以立即处理,避免阻塞主进程。 ```java public class StreamGobbler extends Thread { private InputStream is; private ...

    java执行Linux命令的方法

    这可以通过Java内置的`Runtime.exec()`方法实现。本文将深入探讨如何使用`Runtime.exec()`来执行Linux命令以及相关的注意事项。 首先,我们来看一个简单的Java类`StreamGobbler`,它是一个线程,用于读取并处理`...

    Java代码执行shell命令的实现

    StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), System.out::println); Executors.newSingleThreadExecutor().submit(streamGobbler); int exitCode = process.waitFor(); assert exit...

    java执行bat命令碰到的阻塞问题的解决方法

    在`StreamGobbler.run()`方法中,创建了`InputStreamReader`和`BufferedReader`实例来读取输入流,然后逐行读取并打印或写入到指定的输出流。这样,bat文件的输出就会被实时处理,避免了缓冲区溢出导致的阻塞问题。 ...

    java在win下启动bat和在linux下启动shell脚本

    这就是`StreamGobbler.java`的作用,它很可能是一个辅助类,用于“吞噬”或处理`exec()`方法产生的标准输出和错误输出。在Java中,子进程的输出流如果不被读取,可能导致子进程无法结束,因此需要创建线程分别处理`...

    JAVA实现PDF转HTML

    开发者可能创建了一个服务接口,接收PDF文件,然后调用相应的转换方法,最后返回HTML字符串或者直接将HTML写入文件。转换过程中,需要注意保持原始PDF的样式和排版,这可能涉及到解析PDF的字体、颜色、图像和页面...

    ssh协议依赖jar包:ganymed-ssh2-build

    然后,创建`Connection`实例,调用`connect()`方法建立连接,通过`login()`或`authPublickey()`等方法进行身份验证。一旦连接成功,可以创建`SCPClient`对象,使用`put()`或`get()`方法进行文件传输。在完成所有操作...

    ssh2向linux发送操作命令,ftp下载linux文件到本地

    - 读取命令输出,通常使用 `StreamGobbler` 类来读取标准输出流和错误输出流。 ### 2. FTP 文件传输 #### 2.1 FTP 协议简介 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。它支持...

    oracle如何使用java source调用外部程序

    如果在实际操作中遇到类似问题,如Java通过`Runtime`调用外部程序出现阻塞,可以参考相关的解决方法,例如使用`StreamGobbler`类进行异步读取。 总的来说,通过Java Source在Oracle中调用外部程序,可以实现数据库...

    JAVA 转换字符编码工具

    - `StreamGobbler.java`:可能是用来处理输入流的类,可能包含从输入流中读取数据并进行编码转换的功能。 - `BufferedStream01.java`:可能实现了使用缓冲流进行文件读写的例子,可能涉及到字符编码转换。 - `...

    StartStopAppium:关于如何以编程方式启动停止 appium 服务器的代码示例

    // 打开连接并设置请求方法为DELETE HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("DELETE"); // 发送请求 int responseCode = connection....

    pdf转html.rar

    2. `StreamGobbler.java`:这个名字暗示这可能是一个用于处理I/O流的辅助类,特别是处理命令行进程的输出流。在PDF转HTML过程中,如果使用了命令行工具,那么这个类可能用来捕获并处理子进程的输出,例如标准输出和...

    Java远程调用Shell脚本并获取输出信息【推荐】

    本文主要介绍了Java远程调用Shell脚本并获取输出信息的方法。该方法通过使用Java的SSH客户端来连接远程Linux服务器,执行Shell脚本,并获取输出信息。 一、添加依赖 要使用Java远程调用Shell脚本,需要添加以下...

    通过Java实现bash命令过程解析

    import ch.ethz.ssh2.StreamGobbler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java....

Global site tag (gtag.js) - Google Analytics