RandomAccessFile 随机访问文件
2012-07-13 22:05
495 查看
该类不算是IO体系中的子类,而是直接继承自Object。
但是它是IO包中的成员,因为它 具备读和写的功能。内部封装了一个数组,而且通过指针对数据的元素进行操作,
可以通过getFilePointer获取指针位置
可以通过seek改变指针的位置
可以完成读写的原因:类内部封装了字节输入流和输出流
局限性:该类只能操作文件,而且操作文件还有模式:r 读 rw 读写。
如果模式为:r 不会创建文件,会去读取一个已存在的文件,如果该文件不存在,则会出现异常。
如果模式为:rw 那么操作的文件不存在,会自动创建,如果存在则不会覆盖。
例:
但是它是IO包中的成员,因为它 具备读和写的功能。内部封装了一个数组,而且通过指针对数据的元素进行操作,
可以通过getFilePointer获取指针位置
可以通过seek改变指针的位置
可以完成读写的原因:类内部封装了字节输入流和输出流
局限性:该类只能操作文件,而且操作文件还有模式:r 读 rw 读写。
如果模式为:r 不会创建文件,会去读取一个已存在的文件,如果该文件不存在,则会出现异常。
如果模式为:rw 那么操作的文件不存在,会自动创建,如果存在则不会覆盖。
例:
import java.io.IOException; import java.io.RandomAccessFile; public class RandomDemo { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub // writeFile(); readFile(); } public static void readFile() throws Exception { RandomAccessFile raf = new RandomAccessFile("D:\\tmp\\ran.txt", "r"); raf.seek(8 * 1);// 设置指针,比如这里,名单由名称和年龄组成,一起共8位。所以这里我也可以设置读第几名单。 raf.skipBytes(8);// 跳过8位,再读取或写入 byte[] buf = new byte[4]; raf.read(buf); String name = new String(buf); int age = raf.readInt(); System.out.println("name:" + name); System.out.println("age:" + age); raf.close(); } public static void writeFile() throws Exception { RandomAccessFile raf = new RandomAccessFile("D:\\tmp\\ran.txt", "rw");// 设置文件为读写 raf.write("张三".getBytes()); // raf.write(259);// // 这里写入为什么是乱码呢?因为write只写入int型的最低8位,8位表达最大的值255,所以这里丢精度了。可以改成writeInt()将int的4个8位全写入。或者将int转换为byte再一个字节一个字节的写入。 // raf.writeInt(259); raf.writeInt(97);// 在文件中是这样:王五空格空格空格a 这中间有三个空格。 raf.write("赵六".getBytes()); raf.writeInt(99); raf.close(); } public static void writeFile_2() throws IOException { RandomAccessFile raf = new RandomAccessFile("ran.txt", "rw"); raf.seek(8 * 0);// 这里将会修改第一个名单的数据,其实就是覆盖掉了 raf.write("周期".getBytes()); raf.writeInt(103); raf.close(); } }
相关文章推荐
- Java 文件随机访问类-RandomAccessFile
- [Java核心API]IO流--随机访问文件RandomAccessFile
- 随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
- Java之RandomAccessFile(随机访问文件)
- RandomAccessFile:对文件随机访问
- Java之文件的随机访问和读写RandomAccessFile
- MappedByteBuffer高速缓存文件、RandomAccessFile随机访问
- 随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
- JavaIO之RandomAccessFile随机访问文件
- RandomAccessFile随机访问文件
- IO流--RandomAccessFile--随机访问文件
- 随机访问文件的读取和写入对象:RandomAccessFileDemo
- RandomAccessFile随机访问分割文件
- JavaIO之RandomAccessFile随机访问文件
- RandomAccessFile随机访问文件的读取和写入
- java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile
- 随机访问文件 自身具备读写 的RandomAccessFile
- RandomAccessFile随机访问文件,可读可写
- RandomAccessFile任意访问文件的位置
- [疯狂Java]I/O:文件随机读写专用类——RandomAccessFile