在System类中提供了如下三个重定向标准输入/输出方法。

static void setErr​(PrintStream err)
Reassigns the "standard" error output stream.(重定向“标准”错误输出流)
static void setIn​(InputStream in)
Reassigns the "standard" input stream.(重定向“标准”输入流)
static void setOut​(PrintStream out)
Reassigns the "standard" output stream.(重定向“标准”输出流)
static void setProperties​(Properties props)
Sets the system properties to the Properties argument.                                                                                                 
static String setProperty​(String key,String value)
Sets the system property indicated by the specified key.
static void setSecurityManager​(SecurityManager s)
Sets the System security.

  下面程序通过重定向标准输出流,将System.out的输出重定向到文件输出,而不是在屏幕上输出。

  首先回顾PrintStream的构造器:

Constructor Description
PrintStream​(File file)
Creates a new print stream, without automatic line flushing, with the specified file.
PrintStream​(File file, String csn)
Creates a new print stream, without automatic line flushing, with the specified file and charset.
PrintStream​(OutputStream out)
Creates a new print stream.
PrintStream​(OutputStream out, boolean autoFlush)
Creates a new print stream.
PrintStream​(OutputStream out, boolean autoFlush,String encoding)
Creates a new print stream.
PrintStream​(String fileName)
Creates a new print stream, without automatic line flushing, with the specified file name.
PrintStream​(String fileName, String csn)
Creates a new print stream, without automatic line flushing, with the specified file name and charset.
 package com.zyjhandsome.io;

 import java.io.*;

 public class RedirectOut {

     public static void main(String[] args) {
// TODO Auto-generated method stub
try {
PrintStream ps = new PrintStream(new FileOutputStream("D:\\User_zhaoyingjun\\JavaSE\\Test\\RedirectOut.log"));
// 将标准的输出重定向到ps输出流
System.setOut(ps);
// 向标准输出输出一个字符串
System.out.println("普通字符串");
// 向标准输出输出一个对象
System.out.println(new RedirectOut());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

  在“Redirect.log”文件中输出结果:

 普通字符串
com.zyjhandsome.io.RedirectOut@71be98f5

  下面程序重定向标准输入流,从而可以将System.in重定向到指定文件,而不是键盘输入。

 package com.zyjhandsome.io;

 import java.io.*;
import java.util.*; public class RedirectIn { public static void main(String[] args) {
// TODO Auto-generated method stub
try {
FileInputStream fis = new FileInputStream("D:\\User_zhaoyingjun\\JavaSE\\Java_Eclipse_Workspace\\HelloWorld2\\src\\com\\zyjhandsome\\io\\RedirectIn.java");
// 将标准输入流 重定向到fis输入流
System.setIn(fis);
// 使用System.in创建Scanner对象,用于获取标准输入
Scanner sc = new Scanner(System.in);
// 增加下面一行只把回车作为分隔符
sc.useDelimiter("\n");
// 判读是否还有下一个输入项
while (sc.hasNext())
{
// 输出输入项
System.out.println("键盘输入的内容是:" + sc.next());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

  输出结果:

 键盘输入的内容是:package com.zyjhandsome.io;

 键盘输入的内容是:

 键盘输入的内容是:import java.io.*;

 键盘输入的内容是:import java.util.*;

 键盘输入的内容是:

 键盘输入的内容是:public class RedirectIn {

 键盘输入的内容是:

 键盘输入的内容是:    public static void main(String[] args) {

 键盘输入的内容是:        // TODO Auto-generated method stub

 键盘输入的内容是:        try {

 键盘输入的内容是:            FileInputStream fis = new FileInputStream("D:\\User_zhaoyingjun\\JavaSE\\Java_Eclipse_Workspace\\HelloWorld2\\src\\com\\zyjhandsome\\io\\RedirectIn.java");

 键盘输入的内容是:            // 将标准输入流 重定向到fis输入流

 键盘输入的内容是:            System.setIn(fis);

 键盘输入的内容是:            // 使用System.in创建Scanner对象,用于获取标准输入

 键盘输入的内容是:            Scanner sc = new Scanner(System.in);

 键盘输入的内容是:            // 增加下面一行只把回车作为分隔符

 键盘输入的内容是:            sc.useDelimiter("\n");

 键盘输入的内容是:            // 判读是否还有下一个输入项

 键盘输入的内容是:            while (sc.hasNext())

 键盘输入的内容是:            {

 键盘输入的内容是:                // 输出输入项

 键盘输入的内容是:                System.out.println("键盘输入的内容是:" + sc.next());                

 键盘输入的内容是:            }            

 键盘输入的内容是:        } catch (FileNotFoundException e) {

 键盘输入的内容是:            // TODO Auto-generated catch block

 键盘输入的内容是:            e.printStackTrace();

 键盘输入的内容是:        }

 键盘输入的内容是:    }

 键盘输入的内容是:}

  上面程序创建了一个FileInputStream输入流,并使用System的setIn()方法将系统标准输入重定向到该文件输入流。运行上面程序,程序不会等待用户输入,而是直接输出了RedirectIn.java文件的内容,这表明程序不再使用键盘作为标准输入,而是使用RedirectIn.java文件作为标准输入源。

Java 输入/输出——重定向标准输入/输出的更多相关文章

  1. Java重定向标准输入/输出

    在System类中提供了三个重定向标准输入/输出的方法static void setErr(PrintStream err) 重定向“标准”错误输出流static void setIn(InputSt ...

  2. Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向

    一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...

  3. [java]输入一个算术表达式输出结果

    动手有益. 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形.例如:  输入:3+8×2/9-2  输出:2 /** * input a calculate stri ...

  4. java输入一个字符串,输出该字符串的所有的排序

    public class Sort { public static void arrangeSequence(char[] strArr,int i){ char temp; ArrayList< ...

  5. java输出重定向

    Java的标准输入,输出分别是通过System.in和System.out来代表.默认情况下他们分别代表键盘和显示器. System类里提供了3个重定向标准输入,输出的方法. static void ...

  6. java SE :标准输入/输出

    一 标准设备输入/输出 A 标准输入/输出类 System B 控制台读写类 Console  标准输入/输出类  System 1 标准输入.标准输出.错误输出流 // 标准输入流 public f ...

  7. Linux Shell基础 Shell的输入重定向和输出重定向

    概述 在 Linux 中输入设备指的是键盘,输出设备指的是显示器.在 Linux 中,所有的内容都是文件,计算机硬件也是文件,标准输入设备(键盘)和标准输出设备(显示器)也是文件.这些设备的设备文件名 ...

  8. Shell(六):输入/输出重定向

    重定向的作用是将命令的执行结果输出到指定的文件中. 重定向命令列表如下: 文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR). 1.输出重 ...

  9. linux 输出重定向

    输出重定向 标准输入 文件描述符:0 设备:键盘 设备文件名:/dev/stdin 标准输出 文件描述符:1 设备:显示器 设备文件名:/dev/sdtout 标准输出重定向 命令 >> ...

随机推荐

  1. [k8s]一些技巧性的yaml和dockerfile-docker学习思路

    我会把一些dockerfile和yaml的技巧性东西不定期搜集到这里 docker学习思路 三部曲: 1,vm会搭建服务 2,docker会跑服务 3,k8s集群会调度该服务 存储 vm1 vm2 共 ...

  2. Dedecms5.7搜索结果页空白无内容的解决方法

    Dedecms5.7搜索结果页空白.没有内容的解决方法 许多网友在修改dedecms5.7版本的搜索功能时搜索空白的解决方法,正解如下: 系统设置—>其他选项—->是否启用文章全文检索功能 ...

  3. python中,如何将字符串转换为数字(将数字转换为整型),字符串的10转换为整型的10,10.5转换为10

    说明: 在实际的应用过程中,有的时候可能会遇到字符串的10,需要将字符串的10转换为数字的10 在此记录下,通过int函数转换的过程. 操作过程: 1.将字符串转换为整型的10 >>> ...

  4. 修改torndb库为依赖pymysql,使其适应python3,一个更简单的操作数据库的类。

    1.python的MySQLdb和pymysql是两个基本数据库操作包,MySQLdb安装很麻烦,要有c++相关环境,python3也安装不了. python3一般安装pymysql,此包与MySQL ...

  5. [Android Studio] Using API of OpenCV DNN

    前言 一.故事背景 NDK方法人脸识别 OpenCV4Android系列: 1. OpenCV4Android开发实录(1):移植OpenCV3.3.0库到Android Studio 2.OpenC ...

  6. 关于rem适配的3种常用封装

    在之前写了一篇关于rem适配的文章,但是没有给出具体的封装,那么今天这里给出常用的三种方法,分享出来供大家参考学习,下面话不多说了,来随着小编一起学习学习吧 一.rem1.js 第一种方法考虑了m端屏 ...

  7. autodesk fbx sdk sample里面的工程无法调试解决方法

    1.项目属性->常规中的目标文件名改为1 2.链接器->调试中的生成程序数据库文件改成:$(OutDir)1.pdb 3.连接器->常规中的输出文件改成:$(OutDir)1.exe ...

  8. day_6.9py网络编程

    .路由器:能够链接不同的网络使他们之间能够通信 mac就是手拉手传输数据用的

  9. 一、在windows环境下修改pip镜像源的方法(以python3为例)

    在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...

  10. 在Ubuntu上安装Chrome Driver和Firefox Driver

    在Ubuntu上安装Chrome Driver和Firefox Driver 此文章只介绍Chrome Driver(Firefox Driver和该步骤相同) 下载链接:http://chromed ...