第15章-输入/输出 --- 重定向标准输入/输出


第15章-输入/输出 --- 重定向标准输入/输出

  Java的标准输入/输出分别通过System.in和System.out来代表,在默认情况下它们分别代表键盘和显示器,当程序通过System.in来获取输入时,实际上是从键盘读取输入;当程序试图通过System.out执行输出时,程序总是输出到屏幕。

  在System类里提供了如下3个重定向标准输入/输出的方法:

    (1)static void setErr(PrintStream err):重定向"标准"错误输出流。

    (2)static void setIn(InputStream in):重定向"标准"输入流。

    (3)static void setOut(PrintStream out):重定向"标准"输出流。

  

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

复制代码
import java.io.FileOutputStream;
import java.io.PrintStream;

public class RedirectOut
{
    public static void main(String[] args)
    {
        try
        {
            //一次性创建PrintStream输出流
            PrintStream ps = new PrintStream(new FileOutputStream("out.txt"));
            
            //将标准输出重定向到ps输出流
            System.setOut(ps);
            
            //向标准输出 输出一个字符串
            System.out.println("普通字符串");
            
            //向标准输出输出一个对象
            System.out.println(new RedirectOut());
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}
复制代码

 

 

 

 

 下面程序重定向标准输入,从而可以将System.in重定向到指定文件:

  

复制代码
import java.io.FileInputStream;
import java.util.Scanner;

public class RedirectIn
{
    public static void main(String[] args)
    {
        try
        {
            FileInputStream fis = new FileInputStream("props.txt");
            
            //将标准输入重定向到fis输入流
            System.setIn(fis);
            
            //使用System.in创建Scanner对象,用户获取标准输入
            Scanner sc = new Scanner(System.in);
            
            //增加下面一行只把回车作为分隔符
            sc.useDelimiter("
");
            
            //判断是否还有下一个输入项
            while(sc.hasNext())
            {
                //输出输入项
                System.out.println(sc.next());
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
原文地址:https://www.cnblogs.com/baiduligang/p/4247453.html