`
jacobcookie
  • 浏览: 92953 次
社区版块
存档分类
最新评论

古老的RandomAccessFile

阅读更多
package edu.fjut.file;

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

//RandomAccessFile类的主要功能是完成随机读取功能
//可以读取指定位置的内容
public class RandomAccessFileDemo {

	public static void main(String[] args) throws IOException {
		
		//指定要操作的文件
		File file=new File("d:"+File.separator+"javase"+File.separator+"stu.txt");
		//rw为文件的打开方式(r,w,rw),如果文件不存在,会自动创建 
		RandomAccessFile rdf=new RandomAccessFile(file,"rw");
		String name=null;
		int age=0;
		
		//在文件中,所有的内容都是按照字节存放的,都有固定的保存位置.
		name="zhangsan";        //字符串的长度为8
		age=30;                 //数字的长度为4
		rdf.writeBytes(name);   //将姓名写入文件中
		rdf.writeInt(age);      //将年龄写入文件中
		 
		name="lisi    ";        //不够8个字符,用空格补全
		age=32;
		rdf.writeBytes(name);
		rdf.writeInt(age);
		
		name="wangwu  ";
		age=36;
		rdf.writeBytes(name);
		rdf.writeInt(age);
		
		rdf.close();//注意要关闭通道
	
	}

}
 
package edu.fjut.file;

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

//读取文件中的内容
public class RandomAccessFileDemo2 {

	public static void main(String[] args)throws IOException {
       
		File file=new File("d:"+File.separator+"javase"+File.separator+"stu.txt");
		//以只读的方式打开文件
		RandomAccessFile rdf=new RandomAccessFile(file,"r");
		
		String name=null;
		int age;
		
		byte []bytes=new byte[8];
		//跳过一个人的信息
		rdf.skipBytes(12);
		//读取字符串需要一个一个字节的读取
		for(int i=0;i<bytes.length;i++){
			bytes[i]=rdf.readByte();
		}
		name=new String(bytes); //把byte数组转换成字符串对象
		age=rdf.readInt();
		System.out.println("第二个人的信息是: 姓名-->"+name.trim()+",年龄-->"+age);
		
		rdf.seek(0);//指针回到文件的开头
		for(int i=0;i<bytes.length;i++){
			bytes[i]=rdf.readByte();
		}
		name=new String(bytes);
		age=rdf.readInt();
		System.out.println("第一个人的信息是: 姓名-->"+name.trim()+",年龄-->"+age);
        	
		rdf.skipBytes(12);//空出第二个人的信息
		for(int i=0;i<bytes.length;i++){
			bytes[i]=rdf.readByte();
		}
		name=new String(bytes);
		age=rdf.readInt();
		System.out.println("第三个人的信息是: 姓名-->"+name.trim()+",年龄-->"+age);
		
		rdf.close();//注意关闭通道
	}
	/*
		第二个人的信息是: 姓名-->lisi,年龄-->32
		第一个人的信息是: 姓名-->zhangsan,年龄-->30
		第三个人的信息是: 姓名-->wangwu,年龄-->36
	*/
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics