java调用'shell'脚本或'cmd'命令,并得到返回的结果集_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java调用'shell'脚本或'cmd'命令,并得到返回的结果集

java调用'shell'脚本或'cmd'命令,并得到返回的结果集

 2010/9/19 22:57:34  tzylwl  http://tzylwl.javaeye.com  我要评论(0)
  • 摘要:ShellCmdLog.class中的代码:publicclassShellCmdLogextendsThread{privatebooleanbLog2Error;//是否打印错误Error标志privateInputStreamins;//待转换文件输入流/***设置是否打印错误Error,设置待转换文件的输入流*@paramis待转换文件输入流*@paramflag是否打印错误Error标志*/publicShellCmdLog(InputStreamis,booleanflag)
  • 标签:java调用 shell 脚本或 cmd 命令 并得 返回 结果集
ShellCmdLog.class中的代码:
public class ShellCmdLog extends Thread
{
    private boolean bLog2Error;  //是否打印错误Error标志
    private InputStream ins;     //待转换文件输入流

    /**
     * 设置是否打印错误Error,设置待转换文件的输入流
     * @param is    待转换文件输入流
     * @param flag  是否打印错误Error标志
     */
    public ShellCmdLog(InputStream is, boolean flag)
    {
        super("ShellCmdStream" + (flag ? "-error" : "-out"));
        bLog2Error = flag;
        ins = is;
    }

    /**
     * 执行转换线程
     */
    public void run()
    {
        if (ins != null)
        {
            InputStreamReader isr = new InputStreamReader(ins);
            BufferedReader br = new BufferedReader(isr);
            try
            {
                String line = null;
                while ((line = br.readLine()) != null)
                {
                    if (bLog2Error)
                    {
                        System.out.println("Shell_Err>" + line);
                    }
                    else
                    {
                    System.out.println("Shell_Out>" + line);
                    }
                } //end of while(true)
            }
            catch (IOException ioe)
            {
            System.out.println("ShellCmdLog error:" + ioe);
            }
            finally
            {
                try
                {
                    if (isr != null)
                    {
                        isr.close();
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
                try
                {
                    if (br != null)
                    {
                        br.close();
                    }
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
}

// java调用shell脚本
String path="/zte/ippbxweb/util/zxecs_dbbackup.sh" ;//脚本位于服务器中的路径
String statement[] ={ "/bin/sh", path}; 
try {
Process process = Runtime.getRuntime().exec(statement);
InputStream in = process.getInputStream(); // 获取输入流
InputStream err = process.getErrorStream();// 获取错误流

ShellCmdLog sgStdout = new ShellCmdLog(in, false);
ShellCmdLog sgStderr = new ShellCmdLog(err, true);

sgStdout.start();
sgStderr.start();

final int result = process.waitFor(); 


// 为流读出捕获流设定的时间间隔。
Thread.sleep(100);

if (process != null) {
    process.destroy();
}

// 集合读取线程
sgStdout.join();
sgStderr.join();


} catch (Exception e) {
e.toString();
}
发表评论
用户名: 匿名