“r”:以只读的方式打开,调用该对象的任何write(写)方法都会导致IOException异常
“rw”:以读、写方式打开,支持文件的读取或写入。若文件不存在,则创建之。
“rws”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。这里的“s”表示synchronous(同步)的意思
“rwd”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。使用“rwd”模式仅要求将文件的内容更新到存储设备中,而使用“rws”模式除了更新文件的内容,还要更新文件的元数据(metadata),因此至少要求1次低级别的I/O操作
package test; import java.io.*; import java.sql.SQLClientInfoException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.zip.InflaterInputStream; import javax.annotation.processing.FilerException; import javax.management.RuntimeErrorException; import privateclass.Filterby_Name; import privateclass.Filterby_hidden; import privateclass.Filterby_java; import privateclass.MyBufferedReader; import privateclass.Person; public class Main { private static final String space_operator = " "; private static final double pi = Math.PI; private static final String LINE_SEPARATOR = System.getProperty("line.separator"); private static final int SIZE = 1024*1024; /* * RandomAccessFile具有随机读取和随机读入的属性 * 我们使用构造函数的时候 * 第二个参数值能是 *“r”:以只读的方式打开,调用该对象的任何write(写)方法都会导致IOException异常 *“rw”:以读、写方式打开,支持文件的读取或写入。若文件不存在,则创建之。 *“rws”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。这里的“s”表示synchronous(同步)的意思 *“rwd”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。使用“rwd”模式仅要求将文件的内容更新到存储设备中,而使用“rws”模式除了更新文件的内容,还要更新文件的元数据(metadata),因此至少要求1次低级别的I/O操作 * 我们可以用seek来设置指针的位置 * 我们可以用getFilePointer来获取指针的位置 */ public static void main(String[] args) throws Exception { RandomAccessFile raf = new RandomAccessFile("ran.txt","rw"); //rafwrite(raf); //rafread(raf); randomwrite(raf); } public static void randomwrite(RandomAccessFile raf) throws IOException { raf.seek(3*8); raf.write("李四".getBytes()); raf.writeInt(33); } public static void rafread(RandomAccessFile raf) throws IOException { //通过设置Pointer的位置来读取数据(随机性体现) raf.seek(1*8); byte buf[] = new byte[4]; raf.read(buf); String name = new String(buf); int age = raf.readInt(); //获取当前指针的位置 System.out.println(raf.getFilePointer()); System.out.println(name + " " + age); } public static void rafwrite(RandomAccessFile raf) throws IOException { raf.write("张三".getBytes()); raf.writeInt(97); raf.write("小强".getBytes()); raf.writeInt(101); } }