您的位置:首页 > 其它

IO流 RandomAccessFile

2016-01-24 16:41 411 查看
package com.yyq;
import java.io.*;
/*
* RandomAccessFile
* 该类不算是IO体系中的子类
* 而是直接继承自Object
* 但是他是Io包中的成员,因为它具备读和写的功能
* 内部封装了一个数组,而且通过指针对数组的元素进行操作
* 可以通过getFilePointer获取指针位置
* 同时可以通过seek改变指针的位置
*
* 其实完成读写的原理就是内部封装了字节输入流和输出流
* 通过构造函数可以看出:该类只能操作文件,而且操作文件还有模式
* 如果该对象的构造函数要操作的文件不存在,会自动创建,如果存在则不会覆盖
*
* 如果模式为只读r 不会创建文件,回去读取一个已存在文件,
* 如果该文件不存在,则会出现异常
* 如果模式为rw,操作的文件不存在,会自动创建,如果存在则不会覆盖
* 它可以实现数据的分段往里写入数据。
*
*/
public class RandomAccessFileDemo {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
writeFile();
//readFile();
}
public static void readFile() throws IOException{
RandomAccessFile raf = new RandomAccessFile("ran.txt","r");
// 调整对象中的指针
// 跳过多少个字节来取,跳过指定的字节数

raf.seek(0);
// 可以往下跳,但是不能往回跳
raf.skipBytes(1);
byte[] buf = new byte[4];
raf.read(buf);
String name = new String(buf);
//int age = raf.readInt();
System.out.println(name);
}
// RandomAccessFile 可以随机写
public static void writeFile_2() throws IOException{
RandomAccessFile raf = new RandomAccessFile("ran.txt","rw");
raf.write("lisi".getBytes());
//wirte 方法 只能显示 后8位
raf.writeInt(258);
raf.close();
}
public static void writeFile() throws IOException{
RandomAccessFile raf = new RandomAccessFile("ran.txt","rw");
raf.seek(8*4);
raf.write("aaa".getBytes());
//wirte 方法 只能显示 后8位
raf.writeInt(258);
raf.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: