RandomAccessFile的用法

“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);
	}

}

  

原文地址:https://www.cnblogs.com/WINDZLY/p/11827681.html

时间: 2024-10-08 08:47:55

RandomAccessFile的用法的相关文章

RandomAccessFile的用法【转】

现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下“Lucene是一款非常优秀的全文检索库”.可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实现了,直接使用Java中的流读取了txt文本里原来所有的数据转成字符串后,然后拼接了“Lucene是一款非常优秀的全文检索库”,又写回文本里了,至此,大功告成.后来需求改了,向5G数据的txt文本里追加了,结果XXX君傻了,他内存只有4G,如果强制读取所有的数据并追加,会报内存溢出的异常. 其实上面

Java网络编程一

71.Java网络支持提供了 java.net包 ********************************************************************(由于电脑原因困扰我半上午,,,,)java中package问题理解: 2.InetAddress包括两个子类 Inet4Address Inet6Address 在写类时如果指定了package,则必须把生成的.class文件放到package对应的文件夹下,运行时 2.1该类无没有提供构造器,用两个静态方法获

Java RandomAccessFile用法

RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不

Java RandomAccessFile用法(转)

原文链接:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutpu

Java RandomAccessFile用法 【转】

RandomAccessFile源地址:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件.RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口

Java RandomAccessFile基本的用法

一.认识RandomAccessFile类 RandomAccessFile是Java提供的对文件内容的访问,既能够读取文件,也能够写文件: RandomAccessFile支持随机访问文件,可以访问文件的任意位置. (1)打开文件,有两种打开模式-----"rw"(读写)."r"(只读) RandomAccessFile raf=new RandomAccessFile(file,"rw"): RandomAccessFile能够随机读取文件的

10.26的总结, 管道流用法, RandomAccessFile, DataStream 有待深入.

1 package test; 2 import java.io.*; 3 import java.nio.channels.FileChannel; 4 import java.util.*; 5 public class Test10_26 6 { 7 public static void main(String[] args) throws Exception 8 { 9 10 } 11 public static void method_delete() 12 { 13 File dir

Android清单文件详解(四) ---- backupAgent的用法

在<application>节点中有一个非常重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,用法及其相关属性等方面来详细介绍一下. 1.backupAgent简介 android:backupAgent用来设置备份代理.对于大部分应用程序来说,都或多或少保存着一些持久性的数据,比如数据库和共享文件,或者有自己的配置信息.为了保证这些数据和配置信息的安全性以及完整性,Android提供了这样一个机制. 我们可以通过这个备份机制来保存配置信息和数据以便为应用程序提供恢

ByteBuffer用法小结

在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的. 1.创建ByteBuffer1.1 使用allocate()静态方法    ByteBuffer buffer=By