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);//注意添加的位置