您的位置:首页 > 编程语言 > Java开发

15、Java入门—Java IO流之RandomAccessFile类的基本操作

2016-10-23 19:00 495 查看
【RandomAccessFile类】

RandomAccessFile java 提供的对文件内容的访问,既可以读文件,也可以写文件

RandomAccessFile支持随机访问文件,可以访问文件的任意位置

①java文件模型

在硬盘上的文件是 byte byte byte存储的,是数据的集合

②打开文件

有两种模式“rw”(读写)“r”(只读)

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

③写方法

raf.write(int) ---> 只写一个字节(后8位),同时指针指向下一个位置

④读方法

int b = raf.read() ----> 读一个字节

⑤文件读写完成以后一定要关闭
否则会有意想不到的错误

File demo = new File("demo");

if(!demo.exists())

demo.mkdir();//创建demo目录

File file = new File(demo,"raf.dat");

if(!file.exists())

file.createNewFile();//在demo目录下,创建raf.dat文件

//打开文件,进行随机读写

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

raf.write('A');//只写一个字节,同时指针后移

System.out.println(raf.getFilePointer());//输出:1

raf.write('B');

//若要写入一个整数i则需要写四次

int i=0x7fffffff;

raf.write(i>>>24);//高八位

raf.write(i>>>16);

raf.write(i>>>8);

raf.write(i);//低八位

//也可直接写入一个int

raf.writeInt(i);

//写入汉字

String s="中";

byte[] gbk=s.getBytes("gbk");

raf.write(gbk);

System.out.println(raf.length(0);//输出:12(中文占俩字节)

//读文件时必须把指针移到头部

raf.seek(0);

//一次性读取

byte[] buf= new byte[(int)raf.length()];

raf.read(buf);

System.out.println(Arrays.toString(buf));

//此时打印输出:[65,66,127,-1,-1,-1,127,-1,-1,-1,-42,-48]

//开头的65,66是正确的AB,因为后八位已经能表示AB了

//也可按字符串输出

String s1=new String(buf,"gbk");

System.out.println(s1);//输出:AB?????(因为“中”的前后都有字节,只有定位到中的两个字节,才能读出它)

raf.close();//最后要加上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: