Java标准输入输出流的重定向及恢复
在Java中输入输出数据一般(图形化界面例外)要用到标准输入输出流System.in和System.out,System.in,System.out默认指向控制台,但有时程序从文件中输入数据并将结果输送到文件中,这是就需要用到流的重定向,标准输入流的重定向为System.setIn(InputStream in),标准输出流的重定向为System.setOut(PrintStream out)。若想重定向之后恢复流的原始指向,就需要保存下最原始的标准输入输出流。
示例代码如下:
package redirect; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Scanner; public class Main {
public static void main(String[] args) throws FileNotFoundException {
/**
* 保存最原始的输入输出流
*/
InputStream in = System.in;
PrintStream out = System.out;
/**
* 将标准输入流重定向至 in.txt
*/
System.setIn(new FileInputStream("in.txt")); Scanner scanner = new Scanner(System.in);
/**
* 将标准输出流重定向至 out.txt
*/
System.setOut(new PrintStream("out.txt"));
/**
* 将 in.txt中的数据输出到 out.txt中
*/
while (scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println(str);
}
/**
* 将标准输出流重定向至控制台
*/
System.setIn(in);
/**
* 将标准输出流重定向至控制台
*/
System.setOut(out);
scanner = new Scanner(System.in);
String string = scanner.nextLine();
System.out.println("输入输出流已经恢复 " + string);
}
}
Java标准输入输出流的重定向及恢复的更多相关文章
- java 标准输入输出流,打印流,数据流
		
1 package stream; import static org.junit.Assert.assertNotNull; import java.io.BufferedReader; impor ...
 - Java精选笔记_其他IO流(ObjectInputStream、DataInputStream、PrintStream、标准输入输出流)
		
其他IO流 ObjectInputStream和ObjectOutputStream 如果希望永久将对象转为字节数据写入到硬盘上,即对象序列化,可以使用ObjectOutputStream(对象输出流 ...
 - 黑马程序员——JAVA基础之标准输入输出流
		
------- android培训.java培训.期待与您交流! ---------- 标准输入输出流: System中的基本字段,in,out 它们各代表了系统标准的输入和输出设备. 默认输入设备是 ...
 - freopen()——重定向标准输入输出流
		
freopen()——重定向标准输入输出流 头文件:stdio.h 函数原型:FILE * freopen(const char *filename , const char *type , FIL ...
 - Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
		
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
 - Java IO流-标准输入输出流
		
2017-11-05 19:13:21 标准输入输出流:System类中的两个成员变量. 标准输入流(public static final InputStream in):“标准”输入流.此流已打开 ...
 - JAVA输入输出流
		
概述: 各种流类型(类和抽象类)都位于位于java.io包中,各种流都分别继承一下四种抽象流中的一种: 类型 字节流 字符流 输入流 InputStream Reader 输出流 OutputStre ...
 - java基础---->java输入输出流
		
今天我们总结一下java中关于输入流和输出流的知识,博客的代码选自Thinking in java一书.我突然很想忘了你,就像从未遇见你. java中的输入流 huhx.txt文件的内容如下: I l ...
 - IO流(三)__字节流 标准输入输出流 转换流
		
一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static voi ...
 
随机推荐
- ecshop如何去除后台左侧云服务中心菜单
			
介绍一下如何去除后台云服务中心菜单: 打开admin/templates/menu.htm,把539行的 document.getElementById("menu-ul").in ...
 - ECSHOP文件目录详解
			
ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.php 活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ ...
 - Objective-C中的Block(闭包) (轉載)
			
来源: 伯乐在线 - 青玉伏案 链接:http://ios.jobbole.com/83229/ 学习OC有接触到一个新词Block(个人感觉又是一个牛气冲天的词),但不是新的概念,不是新的东西.学过 ...
 - Java中3DES加密解密与其他语言(如C/C++)通信
			
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
 - AndroidStudio快捷键汇总
			
最近开始全面转向Android Studio开发了,经常要去查快捷键,索性汇总下,自己方便查找 IDE 按键 说明 F1 帮助 Alt(Option)+F1 查找文件所在目录位置 Alt(Option ...
 - 跟Android初学者分享几点经验
			
刚学Android开发的人肯定想知道过来人是怎样入门的,有哪些经验,怎样能少走弯路.本文就跟大家分享一位Android开发者的入门经验,写的条理很清晰,真正讲出了自己的学习过程,尽管每个人的学习方法和 ...
 - 使用pypi镜像源加速第三方库在线安装
			
用easy_install和pip来安装第三方库很方便 它们的原理其实就是从Python的官方源pypi.python.org/pypi 下载到本地,然后解包安装. 不过因为某些原因,访问官方的pyp ...
 - debian下图形化管理工具的安装
			
MySQL GUI Tools是一套图形化桌面应用工具套装,可以用来管理MySQL服务器.该套装工具包含三个工具:MySQL QueryBrowser.MySQL Administrator和MySQ ...
 - Jenkins 安装与配置
			
1. 软件准备 a. 下载 jenkins.war:https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins. 本文以 Jenkins 为演示版 ...
 - Google实习面试归来
			
咱们寝室共有两个人收到面试通知,我和另一哥们G. 今天早上8:30起了个大早,洗漱完毕,简历复印完毕,就和G骑车到达了世贸中 心酒店那儿.真不愧是世贸中心啊,装修就是华丽,连看门的都是印 ...