Java中的文件操作(一)RandomAccessFile
今天,学到的是java中的文件操作。
Java.IO.File
Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是RandomAccessFile支持“随机访问”的方式,即程序可以跳转到文件的任意地方来读写数据。
局限:只能读写文件,不能读写其他IO节点
了解
(1)Java文件模型
在硬盘上是byte byte byte 储存的,是 数据的集合
(2)打开文件
两种常用模式“rw”读写方式 “r”读
(3)写方法
Raf.write(int a)
(4)读方法
(5)用完之后要关闭
演示例子:
package com.my_demo; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Arrays; public class RafDemo { public static void main(String[] args) throws IOException{ File demo = new File("demo"); // 创建一个文件 if(!demo.exists())//如果文件不存在,创建到绝对目录下 { demo.mkdirs();//这是个父目录 } File file = new File(demo, "dat.txt"); if(!file.exists()){ file.createNewFile();//在demo目录下创建了文件 } // RandomAccessFile raf = new RandomAccessFile(file, "rw"); RandomAccessFile raf = new RandomAccessFile("dat.txt", "rw");//读写方式 //看一下初始时的指针位置 System.out.println(raf.getFilePointer()); //往里写一个字节后看看指针的位置 raf.write('c'); //写了一个字节,它的后八位 //看一下此时的指针位置 System.out.println(raf.getFilePointer()); /** * 用writechar()方法时会写入两个字节 */ // raf.writeChar('c'); //写入一个int int i = 0x7fffffff;//最大的整型 raf.write(i>>>24);//写进去高八位 raf.write(i>>>16); raf.write(i>>>8); raf.write(i); //Java底层的运行机制 //看一下此时的指针位置 System.out.println(raf.getFilePointer()); String s ="中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); System.out.println(raf.length()); //读文件,必须把指针移到头部 raf.seek(0); //一次性读取,把文件中的内容都读写到字节数组中 byte[] buf = new byte[(int)raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf)); //最后必须关闭 raf.close(); } }
不足之处望指正,新手请多关照