Print流

1、打印流没有输入,只有输出

 

(1)out是System类中公有的静态成员,可以直接通过.访问,System.out是PrintStream类型的


1、实例1:TestPrintStream:

import java.io.*;

/*功能:利用PrintStream直接往文件中打印数据。*/
public class TestPrintStream 
{
	public static void main(String[] args) 
	{
		PrintStream ps=null;
		try
		{
			FileOutputStream fos=new FileOutputStream("a.dat");
			ps=new PrintStream(fos);//不是向控制台中打印,而是通过输入,向文件中打印
			ps.println("中华人民共和国");
			ps.println("Hello,China!");
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			ps.close();
		}
	}
}

 

(1)打印流不是向控制台中打印,而是通过fos向文件中打印

(2)


2、实例2:TestRedirect

—重定向,把字符写到文件中去

import java.io.*;

/*
 * 重定向的使用
 * 功能:将特定编码的Unicode字符写入文件
 * */

public class TestRedirect 
{
	public static void main(String[] args) 
	{
		PrintStream ps=null;
		try
		{
			FileOutputStream fos=new FileOutputStream("redirect.txt");
			ps=new PrintStream(fos,true,"utf-8");
			/*
			 * PrintStream中有构造方法,可以有三个参数的构造方法
			 * 第一个创建一个OutputStream
			 * 第二个是是不是自动的刷新、缓冲、清空
			 * 第三个指定输出的字符是什么编码格式
			 * */
			if(ps!=null)
			{
				System.setOut(ps);//重定向
			}
			
			int line=0;
			for(char c=100;c<=200;c++)
			{
				System.out.println();//此时通过FileOutputStream这个流往redirect.txt这个文件中输出
				line=0;
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(ps!=null)
			{
				ps.close();
			}
		}
	}
}

(1)PrintStream中有构造方法,可以有三个参数的构造方法,第一个创建一个OutputStream,第二个是是不是自动的刷新、缓冲、清空,第三个指定输出的字符是什么编码格式

(2)System类中有setOut方法,原来用的是out,是一个公有静态成员,类型是PrintStream类型的。现在有一个新的PrintStream,setOut把System.out引用指向对象改成我现在的ps,下面再调用print和println的时候,此时是通过PrintStream这个流,向redirect.txt中输出,不再向控制台中输出。

(3)最终结果是,将字符写到redirect.txt这个文件中了

 

如何修改回原来的样子呢?

import java.io.*;

/*
 * 重定向的使用
 * 功能:将特定编码的Unicode字符写入文件
 * */

public class TestRedirect 
{
	public static void main(String[] args) 
	{
		PrintStream ps=null;
		PrintStream out1=System.out;
		try
		{
			FileOutputStream fos=new FileOutputStream("redirect.txt");
			ps=new PrintStream(fos,true,"utf-8");
			/*
			 * PrintStream中有构造方法,可以有三个参数的构造方法
			 * 第一个创建一个OutputStream
			 * 第二个是是不是自动的刷新、缓冲、清空
			 * 第三个指定输出的字符是什么编码格式
			 * */
			if(ps!=null)
			{
				System.setOut(ps);//重定向
			}
			
			int line=0;
			for(char c=100;c<=200;c++)
			{
				System.out.println();//此时通过FileOutputStream这个流往redirect.txt这个文件中输出
				line=0;
			}
			System.setOut(out1);
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(ps!=null)
			{
				ps.close();
			}
		}
		System.out.println("不再重定向,重新向控制台输出语句");
	}
}

 (1)添加下面的语句不再重定向,恢复向控制台输出语句

PrintStream out1=System.out;

System.setOut(out1);//注意添加的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值