(1)标准输入流:System.in是InputStream类的对象,当程序中需要从键盘读入数据时候,只需要调用System.in中的read()方法。
char ch=System.in.read();
注意:
必须捕获System.in.read()所抛出的异常;
执行System.in.read()方法将从键盘缓冲区读入一个字节的数据,然而返回的16位的二进制数据,其低8位为键盘的ASCII码,高8位为0;
使用System.in.read()来实现键盘输入时,如果键盘缓冲区中没有数据时,系统将进入阻塞状态。所以可以利用它来实现程序的暂停,用户输入后再继续执行。
(2)标准输出流:System.out它是打印输出流PrintStream类的对象,它定义了向屏幕输出不同类型数据的方法println()与 print()。
注意:
System.out.println()它可以输出多种不同类型的数据(如:boolean,double,float,int,long类型的变量以及Object类的对象);
当输出类型为对象时,它将自动调用对象的toString()方法,因此在对象所在的类中应该重写toString()方法以输出特定的文字。
(3)标准输入输出的重定向:改变标准输入输出的方向为其它形式如从文件中输入或输出到文件中。
方法:利用System类中的3个static 方法可以实现。
setIn(InputStream in)
setOut(PrintStream out)
setErr(PrintStream out)
IORedirect.java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
public class IORedirect {
public static void main(String[] args) throws IOException {
PrintStream console = System.out;
BufferedInputStream in = new BufferedInputStream(new FileInputStream("c://UserInput.txt"));
PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("c://UserOutput.txt")));
/**
* 1. 不set任何值,也就是不指定任何输入,输出,错误流方向,保持最原始,通过命令行输入数据System.in
*
* 2. setInt将in缓冲输入流作为输入流,即入口,此时不需要从命令行中输入数据,直接从指定输入流文件中获得对应数据
*
* 3. setOut将打印流作为出口,即输入流中信息通过程序处理之后最终通过out展示出来
*
* 4. setErr将打印输出流作为标准错误输出终端
*/
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(); // Remember this!
System.setOut(console);
}
}