JavaI/O 系统
1.JavaI/O 系统概述
A. 输入输出(I/O):指的是计算机与外部世界,或者一个程序与计算机的其余部分之间的接口
B. 流的概念(流:Stream)
流的基本特性:有数据、有方向
2. 流的分类
a. 输入流:从数据源到应用程序(类:InputStream、Reader)
b. 输出流:从应用程序到数据源(类:OutputStream、Writer)
B. 按处理数据的最小单位的不同分
a. 字节流:(最小单位:byte) (类:InputStream、 OutputStream)
b. 字符流:(最小单位:char) (类: Reader 、 Writer)
C. 按流的功能分:
a. 节点流(低级流)
b. 处理流(高级流)
判断一个流是否是高级流:查看该类的构造器,如果类的构造器带有一个已存在的流作为参数,则是高级流
所有I/O操作的步骤:
建立流、读写流、关闭流
3. 文件类(File类)
A. 创建对象:File file = new File(“test.txt”);
4. 字节流:所有面向字节的流类都继承于InputStream类(输入流)或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能。
InputStream in = null;
In = new FileInputStream(“test.txt”);
方法:
close(): 关闭输入流
read():从流中读取下一个字节
read(byte[ ] b): 从输入流中读取一些字节,并存入数组b
read(byte[ ] b, int off, int len):从输入流中读取前len个字节并存入数组b
OutputStream out = null;
out = new FileOutputStream(“test.txt”);
方法:
close():关闭该输出流
write(byte[] b):将 b.length 个字节从指定的字节数组写入此输出流
write(byte[] b, int off, int len) :将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流
5. 字符流
Reader类中两个常用类:
FileReader:以字符流的形式读取文件,与FileInputStream 用法基本一致
BufferedReader:将流读入缓冲区,然后从缓冲区读取,并且提供了readLine()方法,可以从文本文件中整行的读取数据
Reader r = null;
r = new FileReader(“test.txt”);
Writer类中两个常用类:
FileWriter:以字符流的形式写入文件,与FileOutputStream用法基本一致
BufferedWriter:将缓冲区输出到流
Writer w = null;
w = new FileWriter(“test.txt”);
6. 对象流
A. ObjectInputStream:对象输入流
B. ObjectOutputStream:对象输出流,注意在对象从内存保存到硬盘这个过程中,我们需要先将对象转化成字节流在进行保存,这个过程叫做对象的序列化。只要让对象实现Serializable接口即可,从硬盘读取对象到内存这个过程称为反序列化。