标准IO和重定向IO

版权声明:Copyright © 2019-2099 沧海桑田 https://blog.csdn.net/weixin_38270240/article/details/88799845

【标准输入/输出流】
java提供两个标准输入/输出流,System.in和System.out,主要用于从键盘接收数据以及向屏幕输出数据。
System.in常用方法2个:
int read(),从键盘接收1个字节的数据,返回该字符的ASCII码
int read(byte[]buf),从键盘接收多个字节的数据,保存至字节数组buf,返回接收的字节数据的个数
System.out常用方法2个:
print(),向屏幕输出,不换行,参数为java任意数据类型
println(),向屏幕输出,换行,参数为java任意数据类型
【重定向输入/输出流】
使用标准I/O对文件进行读写很方便,但是,标准I接收键盘数据,标准O输出到控制台,需要告诉I/O新的读入来源地和写出目的地,即,对标准I/O重定向

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
/**
 * 重定向标准I/O到文件.
 * System类有3个静态方法用于重定向标准I/O.
 * setErr(PrintStream err):重定向标准错误输出流
 * setIn(InputStream in):重定向标准输入流
 * setOut(PrintStream out):重定向标准输出流
 */
public class ResetIODirection {

	public static void main(String[] args) throws IOException {
		//1.重定向输出目的地
		//1.1创建PrintStream输出流对象指向目标文件
		PrintStream ps=new PrintStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\

\ResetIODirection.txt"));
		//1.2将标准输出流定向到目标文件,使用重定向标准输出流方法setOut(PrintStream out)
		System.setOut(ps);
		//1.3向目标文件print内容
		System.out.println("标准输出流System.out重定向到文件ResetIODirection.txt");
		ps.flush();
                ps.close();
		//1.4解除输出重定向(使用标准输出)
                System.setOut(System.out);
		
		//2.重定向输入来源地
		//2.1创建InputStream输入流对象指向目标文件
		FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\

\ResetIODirection.txt");
		//2.2将标准输出流定向到目标文件,使用重定向标准输出流方法setIn(PrintStream in)
		System.setIn(fis);
		//2.3从目标文件读入内容
		byte[] b=new byte[fis.available()];
		System.in.read(b);//读入字节数组
		for (byte c : b) {
			System.out.println(c);//打印字节数组
		}
                fis.close();
		//2.4解除输入重定向(使用标准输入)
		System.setIn(System.in);
	}
}

【重定向输出到目标文件且打印在控制台】
eclipse中:右键目标类>run as>run Configrations>common选项卡>Standard Input and Output>Allocate Console打钩选择在控制台输出,File打钩选择在文件中输出,可同时选中

[Console output redirected to file:C:\Users\Administrator\Desktop\123.log]
//打印信息仍然存在于控制台,但与此同时也写入了目标文件

猜你喜欢

转载自blog.csdn.net/weixin_38270240/article/details/88799845