码迷,mamicode.com
首页 > 其他好文 > 详细

重定向标准输入/输出

时间:2016-12-26 21:54:46      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:log   run   fileinput   ace   屏幕   算法   程序   home   system.in   

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):重定向“标准”输出流

将System.out的输出重定向到文件,而不是在屏幕上输出

代码1-1

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class RedirectOut {

	public static void main(String[] args) {
		if (args == null || args.length == 0) {
			throw new RuntimeException("请输入路径");
		}
		PrintStream ps = null;
		try {
			String[] books = new String[] { "Java编程思想", "编译原理", "算法" };
			ps = new PrintStream(new FileOutputStream(args[0]));
			System.setOut(ps);
			for (String book : books) {
				ps.println(book);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (ps != null) {
				ps.close();
			}
		}
	}

}

 

代码1-1运行结果:

root@lejian:/home/software/.io# java RedirectOut books 
root@lejian:/home/software/.io# cat books 
Java编程思想
编译原理
算法

 

代码-2中用FileInputStream创建了一个文件输入流,并使用System的setIn()方法将系统标准输入流重定向到该文件输入流,运行代码1-2,程序不再等待用户输入,而是直接输入用户所给的路径所对应的文件内容

代码1-2

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;

public class RedirectIn {

	public static void main(String[] args) {
		if (args == null || args.length == 0) {
			throw new RuntimeException("请输入路径");
		}
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(args[0]);
			System.setIn(fis);
			Scanner sc = new Scanner(System.in);
			sc.useDelimiter("\n");
			while (sc.hasNext()) {
				System.out.println(sc.next());
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (fis != null) {
					fis.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

 

代码1-2运行结果:

root@lejian:/home/software/.io# java RedirectIn books 
Java编程思想
编译原理
算法

 

重定向标准输入/输出

标签:log   run   fileinput   ace   屏幕   算法   程序   home   system.in   

原文地址:http://www.cnblogs.com/baoliyan/p/6223158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!