标准I/O重定向
Java控制台程序默认是以控制台键盘和显示器作为标准输入/输出设备的,在有些情况下,我们可能希望将程序的标准输入或标准输出进行重新定向。(我的理解就是,不用手动地在控制台用键盘输入,而是从一个文件或者其它有数据的地方输入。)比如程序测试时可能需要大量的数据,如果使用控制台输入测试数据的话每次都要重新输入,这样会很烦琐,引时可以考虑进行输入重定向。下面举了一个书上的例子:
import java.io.*;
public class TestSetInput
{
public static void main(String[] args){
try
{
FileInputStream fis=new FileInputStream("d:/source.txt");
System.setIn(fis);
int avg=0,total=0,count=0,num=0,i;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
while (s!=null&&!s.equals("over"))
{
i=Integer.parseInt(s);
num++;
total+=i;
avg=total/num;
System.out.println("num="+num+"\ttotal="+total+"\tavg="+avg);
s=br.readLine();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public class TestSetInput
{
public static void main(String[] args){
try
{
FileInputStream fis=new FileInputStream("d:/source.txt");
System.setIn(fis);
int avg=0,total=0,count=0,num=0,i;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
while (s!=null&&!s.equals("over"))
{
i=Integer.parseInt(s);
num++;
total+=i;
avg=total/num;
System.out.println("num="+num+"\ttotal="+total+"\tavg="+avg);
s=br.readLine();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
文件“source.txt”中每一行为一个整数。
如果把前两行红色部分的代码去掉,则需要手动地在控制台输入数据。
重定向是在java 1.1中System的静态方法,主要有三种:
public static void setIn(InputStream in)
public static void setOut(PrintStream out)
public static void setErr(PrintStream err)