码迷,mamicode.com
首页 > 数据库 > 详细

Java.io.RandomAccessFile

时间:2016-04-03 17:13:33      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

RandomAccessFile Java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。

1)Java文件模型

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

2)打开文件

  有两种模式 rw 读写  r 只读。

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

  文件指针,打开文件时指针在开头 pointer=0。

3)写方法

  randomAccessFile.write(‘赵‘);//只写了一个字节,同时指针指向下一个位置,准备再次写入

4)读方法

  int b=randomAccessFile.read(...)读一个字节

5)文件读写完成后一定要关闭(Oracle官方说明)

 

package com.zhao.randomAccessFile;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RandomAccessFileDemo {

public static void main(String[] args) throws IOException {
File directory=new File("demo");
if (!directory.exists()) {
directory.mkdir();
}
File file=new File(directory, "raf.txt");
if (!file.exists()) {
file.createNewFile();
}
RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(randomAccessFile.getFilePointer());

randomAccessFile.write(‘赵‘);//只写了一个字节
System.out.println(randomAccessFile.getFilePointer());
randomAccessFile.write(‘B‘);
System.out.println(randomAccessFile.getFilePointer());

int i=0x7ffffff;
//用write方法,每次只能写一个字节,如果把i写进去要写4次
randomAccessFile.write(i>>>24);//高8位
randomAccessFile.write(i>>>16);
randomAccessFile.write(i>>>8);
randomAccessFile.write(i);
System.out.println(randomAccessFile.getFilePointer());

//可以直接写一个i
randomAccessFile.writeInt(i);
System.out.println(randomAccessFile.getFilePointer());

String s="中";
byte[] bytes=s.getBytes("gbk");
randomAccessFile.write(bytes);
System.out.println(randomAccessFile.length());
System.out.println(randomAccessFile.getFilePointer());

//读文件,必须把指针移到头部
randomAccessFile.seek(0);
//一次性读取,把文件中的内容都读到字节数组中
byte[] bs=new byte[(int)randomAccessFile.length()];
randomAccessFile.read(bs);

System.out.println(Arrays.toString(bs));
String ss=new String(bs);
System.out.println(ss);

randomAccessFile.close();

}
}

 // Integer.toHexString(b&0xFF)把byte字节数组转换成十六进制。

Java.io.RandomAccessFile

标签:

原文地址:http://www.cnblogs.com/zhao307/p/5349971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!