RandomAccessFile

RandomAccessFile类的主要功能是完成随机的读取操作,本身也可以直接向文件中保存内容。

如果要想实现随机读取,则在存储数据的时候要保证数据长度的一致性,否则是无法实现功能的。

构造方法:public RandomAccessFile(File file,String mode) 

需要接受一个File类的实例,并设置一个操作的模式:

读模式:r

写模式:w

读写模式:rw,如果文件不存在则自动给用户创建文件

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.RandomAccessFile;

public class RandomAcessDemo {

public static void main(String args[])

{

File file=new File("d:"+File.separator+"demo.txt");

try {

RandomAccessFile raf=new RandomAccessFile(file,"rw");

            //写入第一条数据

String name="zhangsan";

            int age=30;

            raf.writeBytes(name);//以字节的方式将字符串写入

            raf.writeInt(age);//写入整形数据

            //写入第二条数据

            name="lisi    ";

            age=20;

            raf.writeBytes(name);

            raf.writeInt(age);

            raf.close();//关闭文件操作

} catch (IOException e) {

e.printStackTrace();

}

  

}

}

在RandomAccessFile操作的时候读取的方法都是从DataInput接口实现而来,有一系列的readXX()方法,可以读取各种类型的数据,但是在RandomAccessFile中因为可以实现的读取,所以有一系列的控制方法
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAcessDemo {
public static void main(String args[])
{
File file=new File("d:"+File.separator+"demo.txt");
try {
RandomAccessFile raf=new RandomAccessFile(file,"rw");
            byte[] b=null;
            String name=null;
            int age=0;
            raf.skipBytes(12);//跨过第一个人的信息
            System.out.println("第二个人的信息:");
            for(int i=0;i<8;i++)
            {
              b[i]=raf.readByte();//读取字节
            }
            age=raf.readInt();//读取数字
            System.out.println("姓名:"+new String(b));
} catch (IOException e) {
e.printStackTrace();
}
  
}
}
在java中要想进行io的操作一般都使用字节流和字符流

原文地址:https://www.cnblogs.com/jinzhengquan/p/1947897.html