Java_I/O流_总结
程序员文章站
2022-03-22 15:20:40
...
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象
一开始需要注意的就是,流所处理的参照中心始终是程序
Java流类图结构:
字节流和字符流所处理的问题有所区别,字节流是以 8bits 为单位处理问题,而在Java中,字符流处理的最基本的单元是Unicode码元,其大小为 16bits。
设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
一)输入输出流:
输入流只能进行读操作,输出流只能进行写操作:
- 输入流:InputStream或者Reader:从文件中读到程序中;
- 输出流:OutputStream或者Writer:从程序中输出到文件中;
二)结点流:
直接与数据源相连,读入或读出,但直接使用节点流,读写不方便,这是由于每当处理一次,就会直接进行一次访存,这样频繁的处理必然会降低CPU的效率,于是增加了处理流。
三)处理流:
所谓处理流,是指在以结点为基础之上,增加了一个缓冲区,可以将其视为一个黑箱或管道,里面包含了若干功能(1.缓冲功能,避免频繁读写硬盘 2.实现字节流和字符流之间的转换 3.将基础数据类型写入/读出到文件中)
四)转换流:
实现从字节流到字符流的转换。
从文件中读取内容:
import java.io.*; public class Demo { public static void main(String[] args) throws IOException { String filename = "Demo.txt"; BufferedReader buff = new BufferedReader(new FileReader(filename)); String line; while ((line = buff.readLine()) != null) { System.out.print((line)); } buff.close(); } }
从程序中写入至文件:
import java.io.*; import java.util.Scanner; public class Demo { public static void main(String[] args) throws IOException { String filename = "Demo.txt"; BufferedWriter buff = new BufferedWriter(new FileWriter(filename)); Scanner in = new Scanner(System.in); System.out.println("Write something: "); String str = in.nextLine(); buff.write(str); in.close(); buff.close(); } }