1,什么是标准输入输出流(
-
System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
-
System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据
2,修改标准输入输出流
-
修改输入流: System.setIn(InputStream)
-
修改输出流: System.setOut(PrintStream)
【1】 SystemInOut
public class Demo06_SystemInOut {
public static void main(String[] args) throws IOException {
//demo1();
System.setIn(new FileInputStream("a.txt")); //改变标准输入流
System.setOut(new PrintStream("b.txt")); //改变标注输出流
InputStream is = System.in; //获取标准的键盘输入流,默认指向键盘,改变后指向文件
PrintStream ps = System.out; //获取标准输出流,默认指向的是控制台,改变后就指向文件
int b;
while((b = is.read()) != -1) {
ps.write(b);
}
//System.out.println(); //也是一个输出流,不用关,因为没有和硬盘上的文件产生关联的管道
is.close();
ps.close();
}
public static void demo1() throws IOException {
InputStream is = System.in;
int x = is.read();
System.out.println(x);
is.close();
InputStream is2 = System.in;
int y = is2.read();
System.out.println(y);
}
}
3,修改标准输入输出流拷贝图片
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class Test2 {
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("元.jpg")); //改变标准输入流
System.setOut(new PrintStream("copy.jpg")); //改变标准输出流
InputStream is = System.in;
PrintStream ps = System.out;
byte[] arr = new byte[1024];
int len;
while((len = is.read(arr)) != -1) {
ps.write(arr, 0, len);
}
is.close();
ps.close();
}
}