1. 随机访问流RandomAccessFile
RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。
RandomAccessFile的构造方法:
构造方法摘要 | |
---|---|
RandomAccessFile(File file, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。 |
|
RandomAccessFile(String name, String mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。 |
2. 代码示例:
1 package cn.itcast_05; 2 3 import java.io.IOException; 4 import java.io.RandomAccessFile; 5 6 /* 7 * public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。 8 * 模式有四种,我们最常用的一种叫"rw",这种方式表示我既可以写数据,也可以读取数据 9 */ 10 public class RandomAccessFileDemo { 11 public static void main(String[] args) throws IOException { 12 // write(); 13 read(); 14 } 15 16 private static void read() throws IOException { 17 // 创建随机访问流对象 18 RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw"); 19 20 int i = raf.readInt(); 21 System.out.println(i); 22 // 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。 23 System.out.println("当前文件的指针位置是:" + raf.getFilePointer()); 24 25 char ch = raf.readChar(); 26 System.out.println(ch); 27 System.out.println("当前文件的指针位置是:" + raf.getFilePointer()); 28 29 String s = raf.readUTF(); 30 System.out.println(s); 31 System.out.println("当前文件的指针位置是:" + raf.getFilePointer()); 32 33 // 我不想重头开始了,我就要读取a,怎么办呢?通过seek定位方法可以实现随机访问的功能 34 raf.seek(4); 35 ch = raf.readChar(); 36 System.out.println(ch); 37 } 38 39 private static void write() throws IOException { 40 // 创建随机访问流对象 41 RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw"); 42 43 // 怎么玩呢? 44 raf.writeInt(100); 45 raf.writeChar(‘a‘); 46 raf.writeUTF("中国"); 47 48 raf.close(); 49 } 50 }
运行效果,如下:
时间: 2024-10-14 13:05:38