老规矩,先上一段代码:
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileTest {
public static void main(String[] args) throws IOException{
File afile=new File("test.txt"); //创建一个文件路径
if(!afile.exists()) //检验文件是否存在
afile.createNewFile(); //若不存在则在指定目录下建立一个文件
RandomAccessFile rfile=new RandomAccessFile("test.txt", "rw"); //以能读能写的方式打开文件
rfile.write('A'); //要注意的是这里只写入每个字符的低八位
rfile.write('张');
byte[] abyte=new byte[(int) rfile.length()];
rfile.seek(0); //与C语言类似,把文件内部指针调到文件首
rfile.read(abyte);
for(byte e:abyte)
System.out.print(Integer.toHexString(e&0xff)+" "); //按每个字节输出十六机制式的
rfile.close(); //最后不要忘了关闭文件
}
}
这里首先要注意的是,write()方法一次只读入一个字节,到最后如果是把整个abyte字符数组全部输出的话,会得到一段乱码。
到最后输出:
41 20