java I/O进程控制,重定向 演示样例代码

package org.rui.io.util;

import java.io.*;
/**
* 标准I/O重定向
*/
public class Redircting {
public static void main(String[] args) throws IOException {
String path="D:\\Users\\liangrui\\workspace\\thinking\\src\\org\\rui\\io\\util/";
PrintStream console=System.out;
//输入
BufferedInputStream in=new BufferedInputStream(
new FileInputStream(path+"Redircting.java")
);
//输出
PrintStream out=new PrintStream(
new BufferedOutputStream(
new FileOutputStream(path+"testf.out")
)
);
//同意我们对标准输入输出 和错误IO流进行重定向
System.setIn(in);
//System.setOut(out);
//System.setErr(out); //打印得定向的输入流
BufferedReader br=new BufferedReader(
new InputStreamReader(System.in)
);
String s; while((s=br.readLine())!=null)
System.out.println(s);
out.close();// remember this!
System.setOut(console);;
} }
/**
* output:
* 同上源代码
*/

package org.rui.io.util;

public class OSExecuteException  extends RuntimeException{
public OSExecuteException(String why){super(why);} }

package org.rui.io.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* 进程控制
*
* 你常常会须要在java内部运行其他操作系统程序,而且要控制这此程序的输入和输出,java类库提供了运行这些操作的类
*
* 为了捕获程序运行时产生的标准输出流,你须要调用getInputStream(),这是由于。。 。是我们能够从中读取信息的流。 * 从程序 中产生的结果每次输出一行,因此要使用readLine
*
*/
public class OSExecuted { public static void command(String command)
{
boolean err=false;
try {
/**此类用于创建操作系统进程。
* 每一个 ProcessBuilder 实例管理一个进程属性集。 start() 方法利用这些属性创建一个新的 Process 实例。
* start() 方法能够从同一实例反复调用,以利用同样的或相关的属性创建新的子进程。
*/
Process process=new ProcessBuilder(command.split(" ")).start();
//这里还能够返回它们,暂仅仅打印
BufferedReader br=new BufferedReader(
new InputStreamReader(
process.getInputStream()
));
String s;
while((s=br.readLine())!=null)
System.out.println(s); //捕获错误流
BufferedReader b2=new BufferedReader(
new InputStreamReader(
process.getErrorStream()
));
while((s=b2.readLine())!=null)
{
System.err.println("sssssssss:"+s);
err=true;
} } catch (Exception e) {
System.out.println("command Ex =="+command);
if(command.startsWith("CMD /C"))
command("CMD /C"+command);
else
throw new RuntimeException(e);
} if(err)
throw new OSExecuteException(" Errors execting "+ command);
} }

package org.rui.io.util;
/**
* 以下展示了怎样使用OSExecute的演示样例
* @author lenovo
*
*/
public class OSExecuteDemo {
public static void main(String[] args) {
//javac org/rui/io/util/OSExecuteDemo.java
String path="D:\\Users\\liangrui\\workspace\\thinking\\src\\org\\rui\\io\\util/";
//path="";
String commandw="javap "+path+"OSExecuteDemo.class";
//System.out.println(commandw);
OSExecuted.command(commandw);
} }
/************************output:
Compiled from "OSExecuteDemo.java"
public class org.rui.io.util.OSExecuteDemo {
// public org.rui.io.util.OSExecuteDemo();
//public static void main(java.lang.String[]);
}
*******/

java I/O进程控制,重定向 演示样例代码的更多相关文章

  1. java 线程、线程池基本应用演示样例代码回想

    java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...

  2. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

  3. JAVA简单Swing图形界面应用演示样例

    JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...

  4. java文件夹相关操作 演示样例代码

    java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...

  5. java 又一次抛出异常 相关处理结果演示样例代码

    java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...

  6. java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4

    java 线程  原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...

  7. 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)

    1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...

  8. [Python] SQLBuilder 演示样例代码

    用Python写一个SQLBuilder.Java版能够从 http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm 看到. 附 ...

  9. Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ClamReason/article/details/23971805 首先重点推荐介绍otl介绍及使 ...

随机推荐

  1. django实现图片上传后自动修改尺寸并保存修改后的图到数据库和本地文件系统

    图片上传首先要是设置settings.py文件(与静态文件设置类似) MEDIA_ROOT = os.path.join(BASE_DIR,'media')MEDIA_URL = '/media/' ...

  2. WIN10局域网共享,经常出现无法访问的现象的解决方法

    WIN10的局域网共享是真操蛋啊,用着好好的,重启了一下,突然就不好用了,其他人无法访问我的电脑,百度了半天也没有找到能解决的访问,文章中说的都试过了,该开启的也都开启了,防火墙也关了,没用,后来想着 ...

  3. 设计模式--桥梁模式C++实现

    1定义 将抽象和实现解耦,使得两者可以独立变化 2类图 3实现 #pragma once #include<iostream> using namespace std; class Imp ...

  4. 二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器

    编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yield ...

  5. iOS安全系列之 HTTPS

    作者:Jaminzzhang 如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相 ...

  6. 【Error】IOError: [Errno 22] invalid mode

    使用python打开或写入文件时会报以下错误IOError: [Errno 22] invalid mode,比如打开f:\nnpm.txt时,可以在地址前面加上r或R,即r'f:\nnpm.txt' ...

  7. js 返回上一页和刷新以及页面跳转

    1. Javascript 返回上一页history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.forw ...

  8. C++进阶4.C++知识整理

    C++知识整理(多益笔试) 20131012 前言: 还是关于笔试知识的整理,主要是面向对象的知识还有一些常见的语法知识. 1.还是C++内存管理的知识 C++中程序的内存分布如下: 栈:向下增长,可 ...

  9. rsync配置文件的参数详解

    rsyncd.conf配置文件常用参数说明: rsyncd.conf参数 参数说明 uid=rsync rsync使用的用户. gid=rsync rsync使用的用户组(用户所在的组) use ch ...

  10. Java中String两种不同创建方式的区别及intern的用法

    一, Java有两种创建字符串的方式, String str1 = "abc"; String str2 = new String("abc"); 用双引号创建 ...