JAVA IO流几个实用流对象
这段时间相继看到几个当初java基础掌握不太熟悉的io类,所以专门找资料复习了一下这几个类。
它们是:
RandomAccessFile // 随机读写流
DataInputStream DataOutputStream // 数据读取/写入流
ByteArrayInputStream BateArrayOutputStream // 字节数组读取/写入流
CharArrayReader CharArrayWriter // 字符数组读取/写入流
StringReader StringWriter // 字符串读取/写入流
RandomAccessFile: 随机读写流
- 该类不存在于IO体系中,而是直接继承自Object
- 但此类存在于IO包中,因为它具备读和写的功能
- 内部封装了一个数组,通过指针对数组的元素进行操作
- 可以通过getFilePointer获取指针位置
- 可以通过seek改变指针位置
- 操作文件可以指定模式
r/w/rw
- 可以直接写入到硬盘,不经过硬盘的缓存
- 如果模式为只读 r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。
- 如果模式rw。操作的文件不存在,会自动创建。如果存则不会覆盖。
- 多线程下载时,可以用此类来完成分段写入
DataInputStream DataOutputStream 数据读取/写入流
- 可以对基本数据类型进行读和写的操作
- 常用方法有: readInt/writeInt readBoolean/writeBoolean等
//read demo
private static void readData() throws IOException {
DataInputStream dis = new DataInputStream(new FileInputStream(file));
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
}
//write demo
private static void writeData() throws IOException {
DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
dos.writeInt(256);
dos.writeBoolean(false);
dos.writeDouble(3.1415926);
}
数组写入/读取流
ByteArrayInputStream BateArrayOutputStream 字节数组读取/写入流`
CharArrayReader CharArrayWriter 字符数组读取/写入流
StringReader StringWriter 字符串读取/写入流
- 对内存进行写入和读取操作的流对象
- 用流的读写思想来操作数组(数据)。