重定向标准输入输出
Java的输入输入分别通过System.in和System.out来完成,默认情况下他们分别代表键盘和显示器,在System类里还提供了如下3个重定向标准输入/输出的方法:
- static void setErr(PrintStream err):重定向标准错误输出流
- static void setIn(InputStream in):重定向标准输入流
- static void setOut(PrintStream out):重定向标准输入流
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();
}
}
}
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();
}
}
}