浏览 2722 次
锁定老帖子 主题:java IO随机读写流
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-26
package com.io.file; import java.io.IOException; import java.io.RandomAccessFile; /** * @类功能说明:该类不是IO体系中的,而是直接继承自Object * 但是它是IO包中的一员,因为他具备了读写能力 * 内部封装了一个数组,可以通过指针对数组元素的操作 * 可以通过getFilePointer获取指针的位置 * 同时可以通过seek改变指针的位置 * * 其实完成读写的原理,就是内部封装了字节写入流和字节输出流 * 通过构造函数可以看出,该类仅操作文件 * 而且操作文件还有模式:r(只读),rw(读写)等 * * 如果模式为r,不会创建文件,会去读取一个文件,如果读不到,则抛出异常 * 如果模式为rw,要操作的文件不存在,会创建,如果存在,则不会覆盖(写入数据的时候覆盖相应字节位置的数据) * @类修改者: * @修改日期: * @修改说明: * @作者:matieli * @创建时间:May 26, 2012 9:28:59 AM * @版本:V1.0 * */ public class RandomAccessFileDemo { public static void main(String[] args)throws IOException { //writeFile(); //readFile(); //writeFile_2(); } public static void readFile()throws IOException{ RandomAccessFile raf=new RandomAccessFile("ran.txt","r"); //跳过“李四”,读取张三的信息 //raf.seek(8);//当前例子中,名字和年龄各占4个字节 raf.skipBytes(8);//通过掉过字节数的方式,不能向回读。 byte[] b=new byte[4];//之前写入的都是按4字节写入的 raf.read(b); String name=new String(b); System.out.println("名字是:"+name); int age =raf.readInt(); System.out.println("年龄是:"+age); raf.close(); } public static void writeFile_2()throws IOException{ RandomAccessFile raf=new RandomAccessFile("ran.txt","rw"); //控制写入的位置 raf.seek(8*3); raf.write("王五".getBytes()); raf.writeInt(103);//按int的4字节写入 raf.close(); } public static void writeFile()throws IOException{ RandomAccessFile raf=new RandomAccessFile("ran.txt","rw"); raf.write("李四".getBytes()); raf.writeInt(97);//按int的4字节写入 raf.write("张三".getBytes()); raf.writeInt(99);//按int的4字节写入 raf.close(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |