当前位置 > it书童 > java > 正文

java重定向标准输入/输出

java it书童 2020-12-02 17:58:05 0赞 0踩 567阅读 0评论

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

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

  • static void setErr(PrintStream err):重定向 “标准”错误输出流

  • static void setIn(InputStream in):重定向“标准”输入流

  • static void setOut(PrintStream out):重定向 “标准”输出流

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 (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

以上程序运行后,标准输出不再输出到屏幕,而是输出到out.txt文件

接下来重定向标准输入,将输入流重定向到指定文件,而不是键盘输入

public class RedirectIn {
    public static void main(String[] args) {
        try (
            FileInputStream fis = new FileInputStream("src/main/java/crazy/chart15/section05/RedirectIn.java"))
        {
            // 将标准输入重定向到 fis 输入流
            System.setIn(fis);
            // 创建 Scanner 对象,用于获取标准输入
            Scanner sc = new Scanner(System.in);
            // 设置分隔符
            sc.useDelimiter("\n");
            while (sc.hasNext()) {
                System.out.println("输入的内容是:" + sc.next());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

源码 javaDemo a5ec1c3

关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/927