标准输入流: System.in 默认表示的是键盘录入
标准输出流: System.out 默认表示的是屏幕输出
Eg:
package june6D;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
public class SyetemDemo {
public static void main(String[] args) throws IOException {
/**
* 标准流: 标准输入流: System.in 默认表示的是键盘录入
标准输出流: System.out 默认表示的是屏幕输出
*
* 若现在我输出不想打印在屏幕上,怎么办?
* 若现在我不想通过键盘来录入数据,有怎么办?
*
* 流的重定向: static void setOut(PrintStream out) 重新分配“标准”输出流。 static void
* setIn(InputStream in) 重新分配“标准”输入流。
*/
System.out.println("123456789");//最普通的打印
System.err.println("123652");// 同样是一种输出流,打印出的是123652
/**
* static void setOut(PrintStream out) 重新分配“标准”输出流。
*/
//输出流就被重新定义到了文件,而不是屏幕
System.setOut(new PrintStream("68Demo.txt"));// 只有在定义过后才生效,所以上面的还是会输出到控制台
System.out.println("AAAA");
System.out.println("BBBB");//就输出了在文件里
int i = System.in.read();// 接受从键盘输入的数据,写在最前面(没有任何重新分配)才有效
System.out.println("i所对应的是:" + (char) i);// 把它转换为字符型
System.out.println(i);
/**
* 重新分配,由标准键盘输入变为由文件输入
*/
System.setIn(new FileInputStream("copy6.4"));//备注:打印的是文件copy6.4中的数据,而且打印在文件68Demo.txt中。
byte[] buff = new byte[1024];
int len = 0;
while ((len = System.in.read(buff)) != -1) {
System.out.println(new String(buff, 0, len));// 此时不会打印在控制台上,因为上面已经重新定义了由打印到屏幕上转换为打印到文件里
}
}
}