关于I/O重定向的问题,大家帮帮我解答
有下列程序代码: 
 import   java.io.*;   
 public   class   Redirecting   {  	 
 	public   static   void   main(String[]   args) 
 	throws   
IOException   {  		 
 		PrintStream   console   =   System.out; 
 		BufferedInputStream   in   =   new   BufferedInputStream   ( 
 		         new   FileInputStream   ( "Redirecting.java ")); 
 		PrintStream   out   =   new   PrintStream   ( 
 		         new   BufferedOutputStream   ( 
 		                  new   FileOutputStream( "text.out "))); 
 		System.setIn(in); 
 		System.setOut(out); 
 		System.setErr(out); 
 		BufferedReader   br   =   new   BufferedReader   ( 
 		         new   InputStreamReader   (System.in));  		 
 		String   s; 
 		while((s   =   br.readLine())   !=   null) 
 		         System.out.println(s); 
 		out.close(); 
 		System.setOut(console); 
 		} 
 	}    
 请问: 
 1)什么是标准I/O的重定向呢?有什么具体功能?为什么要重定向? 
 2)上面程序的功能是什么? 
 3)上面程序里那个:PrintStream   console   =   System.out;是什么意思         呢?
------解决方案--------------------哦,就是把Redirecting.java文件里的内容定向输出到test.out里面去 
 PrintStream console = System.out;意味着将输出内容打印在控制台上 
------解决方案--------------------mark 
------解决方案--------------------所谓的I/O的重定向:举一个抽象的东西,比如一个箱子,2个孔,一个流入孔,一个流出孔   
 你可以用任何流体接入流入孔,也可以用任何 流出管道\容器 接入流出孔   
 上面的例子就是用缓冲文件流 接入System的这个流入孔, 
 System的流出孔用文件out.txt作为容器接入。 
 将Redirecting.java文件内容流完以后,用系统默认的流出管(console即控制台)接上System的流出孔
------解决方案--------------------MARK