java I/O进程控制,重定向 演示样例代码
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进程控制,重定向 演示样例代码的更多相关文章
- java 线程、线程池基本应用演示样例代码回想
java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...
- ArcSDE SDK For Java二次开发介绍、演示样例
在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- java文件夹相关操作 演示样例代码
java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...
- java 又一次抛出异常 相关处理结果演示样例代码
java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...
- java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
java 线程 原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...
- 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)
1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...
- [Python] SQLBuilder 演示样例代码
用Python写一个SQLBuilder.Java版能够从 http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm 看到. 附 ...
- Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ClamReason/article/details/23971805 首先重点推荐介绍otl介绍及使 ...
随机推荐
- 如何把数字字符'1'转换为整数(java 实现)
在一些表达式计算时,如 “3+2” 表达式自身是个字符串,通过切片得到的是数字字符和操作符,不能直接进行计算,在表达式计算中需要进行一步操作是,把数字字符'2','3'转化为整数. 如何操作? ...
- DXVA2解码数据用texture纹理渲染
FFmpeg DXVA2解码得到的数据使用surface来承载的,surface限制很多,如果能用纹理来渲染的话,那我们就可以充分开发D3D,比如可以用坐标变换来实现电子放大的功能,还可以用坐标变换来 ...
- oracle11g客户端如何完全卸载(转)
1.停用Oracle服务:进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止 2.在开始菜单中,找到Universal Installer,运行Oracle Universal I ...
- 共用y轴的双图形绘制
实现这种形式的图形,可通过matplotlib和pandas的实现,相比下pandas实现方便的多. 我数据分析的时候主要是stacked bar.bar和line形式的放在一张图上.stacked ...
- PKUSC2013 BUG集锦
如果今年考试真的是这个难度,那比的就是速度和准确度了…… a A:不明觉厉 B:推公式后不明觉厉 C:树的HASH D:不明觉厉 E:QAQ 复制代码'-'忘改'+' WA×1, F:QAQ 请输出 ...
- Linux安装apue.3e(基于ubuntu16.0.4)
本菜刚刚学习UNIX高级编程,无奈搭建本书编程环境时遇到不少问题,参考了网上各路大神的解决办法,最终解决了问题. (1)下载源代码,可以去官网下载:http://apuebook.com/code3e ...
- 【zznu-夏季队内积分赛3-J】追忆
题目描述 “别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“现在是阳历2018/8/7,宝儿姐想起自己参加ACM整整1000天了.她想知道她刚入坑是什么时间.那么问题来了,请帮宝儿姐追忆一下 ...
- C# ASP.NET 验证码
使用C# ASP.NET 获取 验证码的代码书写 一般都采用异步 点击 前台验证码图片 请求一次 : 前台图片代码: <img id="imgvalidatecode" sr ...
- CF 916
题解: 首先看题目 A题看不懂... 花了5分钟才做出来 还wa了 B题 一看好像是堆+位运算? 然后A了样例 C题 wa了好激发 似乎加边加错了 然后看D,似乎是可持久化平衡树? 我又不会... E ...
- Ubuntu 13.10 如何修改背景色--豆沙绿
如何修改Ubunut 13.10的窗口背景色,在网上找到了多资料,安装了dconf,Unity Tweak Tool,GNOME Color Chooser都无法修改背景色. 最后,还是直接去修改主题 ...