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

【JAVA IO】_RandomAccessFile笔记

2013-01-29 16:04 585 查看
【JAVA IO】_RandomAccessFile笔记

本章目标:

掌握RandomAccessFile类的作用

可以使用RandomAccessFile读取指定位置的数据

RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定位置的内容。

RandomAccessFile是按字节进行读取数据的。要想了解数据类型的字节长度请看这里:

java里面一个字符占几个字节?
http://blog.csdn.net/e421083458/article/details/8518578
Java中字符串在不同字符编码中所占字节数
http://blog.csdn.net/e421083458/article/details/8518601


public RandomAccessFile(File file,String mode) throws FileNotFoundException

mode即打开模式:

r:读模式

w:只写

rw:读写,如果使用此模式,如果文件不存在,则会自动创建。

import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo01{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的文件
RandomAccessFile rdf = null ;        // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"rw") ;// 读写模式,如果文件不存在,会自动创建
String name = null ;
int age = 0 ;
name = "zhangsan" ;            // 字符串长度为8
age = 30 ;                    // 数字的长度为4
rdf.writeBytes(name) ;        // 将姓名写入文件之中
rdf.writeInt(age) ;            // 将年龄写入文件之中
name = "lisi    " ;            // 字符串长度为8
age = 31 ;                    // 数字的长度为4
rdf.writeBytes(name) ;        // 将姓名写入文件之中
rdf.writeInt(age) ;            // 将年龄写入文件之中
name = "wangwu  " ;            // 字符串长度为8
age = 32 ;                    // 数字的长度为4
rdf.writeBytes(name) ;        // 将姓名写入文件之中
rdf.writeInt(age) ;            // 将年龄写入文件之中
rdf.close() ;                // 关闭
}
};


import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo02{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;    // 指定要操作的文件
RandomAccessFile rdf = null ;        // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件
String name = null ;
int age = 0 ;
byte b[] = new byte[8] ;    // 开辟byte数组
// 读取第二个人的信息,意味着要空出第一个人的信息
rdf.skipBytes(12) ;        // 跳过第一个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;    // 读取一个字节
}
name = new String(b) ;    // 将读取出来的byte数组变为字符串
age = rdf.readInt() ;    // 读取数字
System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
// 读取第一个人的信息
rdf.seek(0) ;    // 指针回到文件的开头
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;    // 读取一个字节
}
name = new String(b) ;    // 将读取出来的byte数组变为字符串
age = rdf.readInt() ;    // 读取数字
System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.skipBytes(12) ;    // 空出第二个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;    // 读取一个字节
}
name = new String(b) ;    // 将读取出来的byte数组变为字符串
age = rdf.readInt() ;    // 读取数字
System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.close() ;                // 关闭
}
};


总结:

byte b[] = new byte[8] ;    // 开辟byte数组

for(int i=0;i<b.length;i++){

    b[i] = rdf.readByte() ;    // 读取一个字节,因为每次只能读取一个字节

}

name = new String(b) ;        // 将读取出来的byte数组变为字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: