import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileDemo {
public static void main(String[] args) throws IOException {
RandomAccessFile rdf=new RandomAccessFile("max.txt","rw");
/**写入int最大值*/
int imax=Integer.MAX_VALUE;
rdf.write(imax>>>24);
rdf.write(imax>>>16);
rdf.write(imax>>>8);
rdf.write(imax);
// rdf.writeInt(imax);//相当于上面4句
/**
* seek方法
* void seek(long pos)
* 用于移动当前RandomAccessFile的指针位置
*/
rdf.seek(0);
/**
* long getFilePointer()
* 用于获取当前RandomAccessFile的指针位置
*/
System.out.println("写入完毕");
/**
* int readInt()
* 连续读取4个字节并返回该int值
* 若在读取4个字节的过程中读取到了文件末尾则会抛出异常EOFException
* EOF(end of file)
*/
System.out.println("pos:"+rdf.getFilePointer());// pos:0
System.out.println("读取:"+rdf.readInt());//读取:2147483647
System.out.println("pos:"+rdf.getFilePointer());//pos:4 因为int是4个字节
rdf.seek(0);
System.out.println("读取:"+rdf.read());//127 读取的是byte的最大值
System.out.println("pos:"+rdf.getFilePointer());//pos:1
System.out.println("读取:"+rdf.read());//255
System.out.println("pos:"+rdf.getFilePointer());//pos:2
// System.out.println("读取:"+rdf.readInt());//指针走到文件末尾。出错抛出异常:java.io.EOFException
rdf.seek(0);
rdf.close();
/**
* String提供了方法可以将当前字符串转换为一组字节
* byte[] getBytes()
* 按照系统默认字符集转换为一组字节
* int read(byte[] b)
* 将最多 b.length 个数据字节从此文件读入 byte 数组。
*/
RandomAccessFile raf=new RandomAccessFile("raf.txt","rw");
String str="hello word!";
/**字符串写入**/
byte[] date1=str.getBytes();//11个。字符
raf.write(date1);
raf.write("大家好!".getBytes("utf-8"));
System.out.println("字符串写入完毕");
raf.seek(0);
//解析字符串并读取
byte[] date2=new byte[(int) raf.length()];
int len=raf.read(date2);//实际读取的数据字节
String ss=new String(date2,0,len,"utf-8");
System.out.println("读取结果:"+ss);
raf.close();
}
}
java-文件操作RandomAccessFile
最新推荐文章于 2024-07-22 14:15:06 发布