重定向IO

引用自:http://www.cnblogs.com/liunanjava/p/4307793.html


1.三个静态变量

java.lang.System提供了三个静态变量

  • System.in(默认键盘)
  • System.out(默认显示器)
  • System.err
  • System提供了三个重定向方法

2.重写向方法

System提供了三个重定向方法

方法 说明
static void setErr(PrintStream errr) 重定向标准错误输出流
static void setIn(InputStream in ) 重定向标准输入流
static void setOut(PrintStream out) 重定向歀输出流

3.实例

重定向输入流

package com.pb.io.reio;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

/*
 * 重定向输入
 * 1.有一个已经初始化的InputStream输入流
 * 2.调用System.setIn()方法,将标淮输入流重定向到目的输入流
 * 3.读取System.in中的内容
 */
public class ReIn {

    public static void main(String[] args) throws UnsupportedEncodingException   {
        try {
            //1.声明一个输入流
            FileInputStream fis=new FileInputStream("d:/test/s1.txt");
            //2.重定向
            System.setIn(fis);
            //3.读取System.in标准输入流中的内容
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置字符编码
            //4.输出System.in中的内容
            String line=null;
            while((line=br.readLine())!=null){
                System.out.println(line);
            }
            //5.关闭流
            br.close();
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

重定向输出流

package com.pb.io.reio;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

/*
 * 重定向标淮输出流
 * 1.初始化PrintStream对象
 * 2.调用System.setOut()方法,将标淮输出流重定向至PrintStream对象
 * 3.操作System.out流,
 */
public class ReOut {

    public static void main(String[] args) {

        try {
            //1.声明一个输出流PrintStream对象
            PrintStream ps=new PrintStream(new FileOutputStream("d:/test/ps.txt",true));   //追加内容
            //2.重定向标淮输出流
            System.setOut(ps);
            //3.使用PrintStream对象向流中写信息
            System.out.println("测试重定向成功了没有!");
            System.out.println(new ReOut());
            ps.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-07-30 13:33:17

重定向IO的相关文章

Bash : IO 重定向

标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端(输出结果的地方)已经报告问题的地方,它们分别被称为标准输入(standard input).标准输出(standard output)以及标准错误输出(standard error).程序不必知道也不用关心它的输入与输出背后是什么设备,当程序运行时,这些标准 IO 就已经打开并准备就绪了. 运行时的程序称为进程,在 Linux 系统中,对于每个进程来说,始终有 3 个

Linux中的变量及IO管道使用

变量 io重定向 管道pipe var-变量数学的方程式:设x=2,求y=x^2+2x+1 ?,x和y我们称为未知数,在shell脚本中称为变量,变量用来存储数据,指向内存空间的某个地址,当脚本中重复执行一长串相同代码时,可以使用变量替换,简化代码量,方便开发. 变量赋值var_name=value 变量名命名规则:1.变量名只能包含数字.字母和下划线,而且不能以数字开头:2.变量名最好见名知义,命名机制遵循某种法则:不能够使用程序的保留字,例如if, else, for, while等等,不同

[Think In Java]基础拾遗3 - 容器、I/O、NIO、序列化

目录 第十一章 持有对象第十七章 容器深入研究第十八章 Java I/O系统 第十一章 持有对象 1. java容器概览 java容器的两种主要类型(它们之间的主要区别在于容器中每个“槽”保存的元素个数):Collection和Map. (1)Collection是一个独立元素的序列,这些元素都服从一条或者多条规则.Collection概括了序列的概念——一种存放一组对象的方式. List:按照插入的顺序保存元素(ArrayList,LinkedList) Set:不能有重复元素(HashSet

第3章 文件I/O(4)_dup、dup2、fcntl和ioctl函数

5. 其它I/O系统调用 (1)dup和dup2函数 头文件 #include<unistd.h> 函数 int dup(int oldfd); int dup2(int oldfd, int newfd); 返回值 若成功返回新文件描述符,出错返回-1 功能 文件描述符的复制(将oldfd复制给newfd) 参数 old:原先的文件描述符 newfd: 新文件描述符 备注 (1)由dup返回的新文件描述符一定是当前可用文件描述符中最小数值. (2)用dup2则可以用newfd参数指定新描述符

【开源一个小工具】一键将网页内容推送到Kindle

最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zhanjindong/SimpleSendToKindle 功能:Windows下一个简单的将网页内容推送到Kindle的工具. 写这个工具的是满足自己的需求.自从买了Kindle paperwhite 2,它就成了我使用率最高的一个电子设备.相信很多Kindle拥有者和我一样都有这样一个需求:就是白

第四章 Android启动过程的上层实现

Android中有两个世界,一个是Java世界,一个是Native世界.第三章介绍的是native世界的启动,那么java世界是什么时候启动的呢?还记得在解析完init.rc文件之后启动很多的服务,其中非常重要的两个服务就是zygote和servicemanager.其中zygote就是android世界的第一个虚拟机,在android中扮演非常重要的角色,下面讨论的内容就是android启动剩下的流程,先看一个android上层启动的流程: 1 ini进程在解析完init.rc文件之后启动了一

关于&lt;LDD3&gt; &quot;setconsole.c&quot; Alesssandro Rubini 的邮件回复

关于 "setconsole.c"  Alesssandro Rubini 的邮件回复 抱着试一试的心态给偶像写了一封求助e-mail,回复了!!!我的小心脏啊~ 呵呵~Rubini是谁不解释了... 我的HELP原文主要的关于setconsole.c的问题,这个是LDD3的一个小程序 setconsole.c /* * setconsole.c -- choose a console to receive kernel messages * * Copyright (C) 1998,

Citrix Personal vDisk (PvD)技术解读

一.PvD个性化技术概述 1.1.什么是Citrix PersonalvDisk? PersonalvDisk 功能是在XenDesktop5.5发布的是否集成到XenDesktop的一个增加用户个性化体验的一个功能,该技术收购至RingCube公司的RingCube 5.5.现在最新的版本随着XenDesktop的版本进行持续开发和升级. PersonalvDisk 功能可以将对用户的 VM所做的所有更改重定向到连接至用户 VM 的独立磁盘(即个人虚拟磁盘),从而将每位用户的个性化设置分隔开来

Linux 内核中的 Device Mapper 机制

http://www.68idc.cn/help/server/linux/20141127133367.html 结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物 简介: 本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,