RandomAccessFile是Java提供的对文件内容的访问,她既可以读文件,也可以写文件,并且RandomAccessFile支持随机访问文件,也就是说他可以指定位置进行访问。
我们知道Java的文件模型,文件硬盘上的文件是byte byte byte的字节进行存储的,是数据的集合。下面就是用这个类的步骤。
(1)打开指定的文件,有两种模式“rw”(读写) “r”(只读),创建对象,并且指定file和模式,例如:
RandomAccessFile ac=new RandomAccessFile(file,”rw”);
因为它支持随机访问文件,所以他引入了指针,可以通过指针来写入写出在指定的位置。文件指针,打开文件时指针在开头pointer=0
(2)RandomAccessFile的往文件中写的方法(还有其他的写方法)
Ac.write(int)----->只能写一个字节(后八位),同时文件指针也会移动,指向下一个位置。
(3)RandomAccessFile读的方法(还有其他的读方法)
int b=ac.read()--->读一个字节
(4)文件读写完毕后必须要把他关闭,调用close()的方法。下面就是例子:
//创建相对路径的文件,就是在这个项目中创建一个文件夹 File file=new File("random"); if(!file.exists()) { file.mkdir(); } File fileName=new File(file,"javaio.txt"); if(!fileName.exists()) { fileName.createNewFile();//创建文件 } //创建一个RandomAccessFile的对象,并指定模式rw,能读能写, //注意:必须是文件,不能是路径 RandomAccessFile raf=new RandomAccessFile(fileName,"rw"); //获取此时的文件指针的位置,起始位置为0 System.out.println(raf.getFilePointer()); //向文件中写入字符A,字符类型有两个字节,但她写入的是后八位的字节 //字符A正好可以用后八位的字节表示出来 raf.write(‘A‘); //字符的位置会自动向后移动,文件指针会向后自动移动 System.out.println("输入一个字符之后,文件指针的位置"+raf.getFilePointer()); raf.write(‘B‘); //每次write只能写入一个字节,如果要把i写进去,就需要写四次 int i=0x7fffffff; raf.write(i>>>24 & 0xff);//写入高八位的 raf.write(i>>>16 & 0xff); raf.write(i>>>8 & 0xff); raf.write(i);//写入低八位 System.out.println("写入整数的时候文件指针的位置是"+raf.getFilePointer()); /** * writeInt()的内置方法 * public final void writeInt(int v) throws IOException { write((v >>> 24) & 0xFF); write((v >>> 16) & 0xFF); write((v >>> 8) & 0xFF); write((v >>> 0) & 0xFF); //written += 4; } */ //也可以直接写入int整数 raf.writeInt(i); //写入一个汉字,汉字为两个字节 String str="欢迎学习java"; byte[] b=str.getBytes("gbk"); raf.write(b); System.out.println("此时的长度为"+raf.length()); //读文件必须将文件指针放在开头位置 raf.seek(0); byte[] buf=new byte[(int)raf.length()]; raf.read(buf);//将内容写入buf字节数组中 String str1=new String(buf,"gbk"); System.out.println("文件中的内容为"+str1); raf.close();
时间: 2024-10-12 22:04:24