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

Java IO-RandomAccessFile

2011-11-21 10:30 513 查看
 RandomAccessFile主要功能是随机读取,可以读取指定位置的内容,可以跳过指定的字节数读取

Java代码

 




package com.zzh.io;   
  
import java.io.File;   
import java.io.IOException;   
import java.io.RandomAccessFile;   
  
public class RandomAccessFileDemo {   
       
    /**  
     * RandomAccessFile主要功能是随机读取,可以读取指定位置的内容,可以跳过指定的字节数读取
 
     */  
    public static void main(String[] args) throws IOException {        
        testWrite();   
        testRead();   
    }   
  
    private static void testWrite() throws IOException {   
        File file = new  File("D:" + File.separator + "test.txt");   
        //RandomAccessFile的构造函数的第1个参数表示文件,
  
        //第2个参数表示文件打开的模式,常用有3种:r,w,rw
  
        //rw:如果文件不存在,会自动创建   
        RandomAccessFile raf = new RandomAccessFile(file, "rw");   
           
        String name = null;   
        int age = 0;   
           
        name = "zhangsan";   
        age = 18;   
        raf.writeBytes(name);   
        raf.writeInt(age);   
           
        name = "lisi    ";//这里要补全空格,使字符串为8位,否则读取时会出错
  
        age = 19;   
        raf.writeBytes(name);   
        raf.writeInt(age);   
           
        name = "wangwu  ";//这里要补全空格,使字符串为8位,否则读取时会出错
  
        age = 20;   
        raf.writeBytes(name);   
        raf.writeInt(age);   
           
        raf.close();//关闭资源文件,切记!   
    }   
  
    private static void testRead() throws IOException {   
        File file = new  File("D:" + File.separator + "test.txt");   
        RandomAccessFile raf = new RandomAccessFile(file, "r");   
           
        String name = null;   
        int age = 0;           
        byte[] b = new byte[8];   
           
        raf.skipBytes(12);//跳过第一个人的12个字节,读第二个人的信息
  
        for (int i = 0; i < b.length; i++) {   
            b[i] = raf.readByte();//读取一个字节
  
        }   
        name = new String(b);   
        age = raf.readInt();   
        System.out.println("第二个人的姓名:" + name + ",   年龄:" + age);   
  
        raf.seek(0);//将指针定位回文件开始处,读第一个人的信息
  
        for (int i = 0; i < b.length; i++) {   
            b[i] = raf.readByte();//读取一个字节
  
        }   
        name = new String(b);   
        age = raf.readInt();   
        System.out.println("第一个人的姓名:" + name + ",   年龄:" + age);   
           
        raf.seek(24);//将指针定位到第三个人处,读第三个人的信息
  
//      raf.skipBytes(12);//空出第二个人的信息,读第三个人的信息
  
        for (int i = 0; i < b.length; i++) {   
            b[i] = raf.readByte();//读取一个字节
  
        }   
        name = new String(b);   
        age = raf.readInt();   
        System.out.println("第三个人的姓名:" + name + ",   年龄:" + age);   
           
        raf.close();//关闭资源文件,切记!   
    }   
       
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java null file string byte