重定向输入输出

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

static void setErr(PrintStram err)

功能:重定向标准错误输出

参数:

  • err:重新定向的标准错误输出流

返回值:无


static void setIn(InputStream in)

功能:重定向标准输入

参数:

  • in:重新定向的标准输入流

返回值:无


static void setOut(PrintStram out)

功能:重定向标准输出

参数:

  • out:重新定向的标准输出流

返回值:无


下面两个例子,分别是标准输出重定向:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import java.io.*;

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


标准输入重定向:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

import java.util.*;
import java.io.*;

public class RedirectIn
{
public static void main(String[] args)
{
try (
var fis = new FileInputStream("RedirectIn.java"))
{
// 将标准输入重定向到fis输入流
System.setIn(fis);
// 使用System.in创建Scanner对象,用于获取标准输入
var sc = new Scanner(System.in);
// 增加下面一行将只把回车作为分隔符
sc.useDelimiter("\n");
// 判断是否还有下一个输入项
while (sc.hasNext())
{
// 输出输入项
System.out.println("键盘输入的内容是:" + sc.next());
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}



重定向输入输出
https://zhaoquaner.github.io/2022/05/11/Java/输入输出/重定向输入输出/
更新于
2022年5月22日
许可协议