文件
输入输出
read 方法
public class RandomAccessDemo6 {
public static void main(String[] args) throws IOException {
RandomAccessFile src = new RandomAccessFile("src.AVI", "r");
RandomAccessFile des = new RandomAccessFile("copy.AVI", "rw");
byte[] buf = new byte [1024*10];
int len = -1;
while ((len = src.read(buf))!=-1){
des.write(buf, 0, len);
}
src.close();
des.close();
}
}
read(byte[] b)方法的作用是从**输入流(这里应该是src)**中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。当读取到结尾的时候,没有字节,read()的返回值为-1。因此,当len==-1的时候结束循环。
二级目录
IO流
Input/Output
就是数据的出与入
首先根据方向来说
- 输入流:只能从中读取数据,而不能向其写入数据。
- 输出流:只能向其写入数据,而不能从中读取数据。
需要注意的是这里的出\入是以内存的角度描述。
字节与字符
其实所有数据本质都是字节Byte,但其中的特例txt文档可以直接查看内容的,就是字符
而处理这些的类class 就有
字节 | 字符 | |
---|---|---|
输入 | InputStream | Reader |
输出 | OutputStream | Writer |
节点流 和 处理流
- 节点流:可以向特定IO设备(磁盘、网络)读写数据,直接和文件本身链接
- 处理流:对节点流封装
流的概念模型
等待输出的一个txt就是一个输入流
已经输出过的txt就是一个输出流
InputStream和Reader
- int read():从输入流中读取单个字节(相当于从图15.5所示的水管中取出一滴水),返回所读取的字节数据(字节数据可直接转换为int类型)。
- int read(byte[ ] b):从输入流中最多读取 b.length 个字节的数据,并将其存储在字节数组b中,返回实际读取的字节数。
- int read(byte[] b, int off, int len):从输入流中最多读取len个字节的数据,并将其存储在数组b 中,放入数组b中时,并不是从数组起点开始,而是从off位置开始,返回实际读取的字节数。