您的位置:首页 > 其它

文件(三)--RandomAccessFile

2014-09-24 09:00 176 查看

1.JAVA文件模型

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

2.打开文件

        有两种方式:“rw”(读写),“r”(只读);

        RandomAccessFile raf = new RandomAccessFile(file,“rw”);

        文件指针,打开文件时文件指针pointer = 0;

3.写方法

        raf.write()--每次写,只能写一个字节(后8位),pointer加1,指向下个位置,准备再次写入

4.读方法

          int b = raf.read()--和写一样一次读一个字节

5.关闭

          读写完成后一定要关闭raf.close(),不然会出现不可预料的错误

示例代码:

import java.awt.Point;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.RandomAccess;

public class RandomAccessFileSy {

/**
* @param args
*/
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
File demo = new File("demo");
if(!demo.exists()){
demo.mkdir();
}
File file = new File(demo,"raf.dat");
if(!file.exists()){
file.createNewFile();
}

RandomAccessFile raf = new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(raf.getFilePointer());
//注意每次只能写一个字节
raf.write('A');
System.out.println(raf.getFilePointer());
raf.write('b');

int i = 0x7fffffff;//最大整数,四个字节
raf.write(i>>>24);
raf.write(i>>>26);//四次写入
raf.write(i>>>8);
raf.write(i);

raf.writeInt(i);//或者直接调用该方法,其实现如上所示

String s = "余";
byte[] bytes = s.getBytes("gbk");
raf.write(bytes);
System.out.println(raf.getFilePointer());

//读的时候指针要指向开头
raf.seek(0);
//一次性读取
byte[] dbyte = new byte[(int)raf.length()];
raf.read(dbyte);

System.out.println(Arrays.toString(dbyte));
for (byte b : dbyte) {
System.out.print(Integer.toHexString(b&0xff)+" ");
}

raf.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: