JavaIO

129 阅读1分钟

转载链接

一、基础概念

1.定义

流是指数据在计算机各部件之间的流动

2.分类

按照"流"的数据流向,可以将其划分为:输入流和输出流。

输入流(Input Stream)表示Java程序从外部数据源(比如键盘、文件、内存)读入数据。

输出流(Output Stream)表示Java程序向外部(比如显示器、文件、内存)写入数据。

按照处理数据类型的不同分为:字符流和字节流。

字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读取多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片,avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。

字节流的抽象基类:

  InputStream,OutputStream

字符流的抽象基类:

  Reader,Writer

20220103-204242.png

20220103-205000.jpeg

二、操作

1. 将输入字节流包装成 包装输出流
// InputStreamReader 把输入字节流转换成输入字符流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, "utf-8"));
System.out.println("输入内容:");
String s = bufferedReader.readLine();
System.out.println("echo:" + s);
2.将Java控制台输出 重定向到文件中
FileOutputStream fileOutputStream = new FileOutputStream("test.txt", false);
PrintStream printStream = new PrintStream(fileOutputStream, true, "utf-8");
System.setOut(printStream);
System.out.println("你好");
3.将文件输入流包装成 包装输入流
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("test.txt"),"utf-8"));
bufferedWriter.write("hello world!");
bufferedWriter.close();