第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(); } }