RandomAccessFile类
用于读写文件内容的类.
硬盘上的文件是byte by byte的
void write(int d):写一个字节,写int值的低8位.
写基本数据类型
void writeInt(int d):写四个字节,将int值d写出.
void writeLong(long l):写八个字节,写long值
void writeDouble(double d):写一个double值
void write…
int read():读一个字节.返回一个int值,只有低8位有效
读基本数据类型
int readInt():读取一个int值,连续读4个字节,转化为int值
long readLong()
double readDouble()
…
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 使用RandomAccessFile读写文件
* 读写操作后,要将其关闭
* @author Administrator
*
*/
public class RandomAccessFileDemo {
public static void main(String[] args) throws IOException {
/**
* 向文件中写入内容
*/
File file=new File("out.dat");
//文件不存在就创建
if(!file.exists()){file.createNewFile();
}
//创建用于读写文件内容的RandomAccessFile
//构造方法参数(file,string)
//"r"只读 "rw"读写
RandomAccessFile raf=new RandomAccessFile(file,"rw");
/**
* write(int d)向文件中写入1个字节,这个字节是int的低8位
*/
//输出指针位置,默认是在文件开始,位置0代表第一个字节.
System.out.println(raf.getFilePointer());
//写入字符'A'
raf.write('A');
System.out.println(raf.getFilePointer());
raf.write('B');
int max=Integer.MAX_VALUE;
raf.write(max>>>24);//写入int值高8位
raf.write(max>>>16);
raf.write(max>>>8);
raf.write(max);
System.out.println(raf.getFilePointer());
/**
* RandomAccessFile的读写操作是基于指针的
* 只会读写读取指针指向的这个字节
*
* 移动指针的方法 seek(int p)
* 参数p:需要将游标移动到的位置
*/
raf.seek(0);
char a=(char)raf.read();
System.out.println(a); //A
/**
* 现在指针指向第二个字节
* 这个位置原来的内容是字符'B' 在这里写了一个字节
* 这个字节的内容是字符'C',这时候'B'就被替换掉了
*/
raf.write('C');
raf.close();//关闭,释放操作文件的资源.
}
}
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("out.dat");
RandomAccessFile raf=new RandomAccessFile(file,"rw");
/**
* read==>00000000 00000000 00000000 01010101
* a ==>00000000 01010101
*/
char a=(char)raf.read();
char b=(char)raf.read();
System.out.println(a);
System.out.println(b);
/**
* 读取int值
*/
int data=raf.read();
int num=0;
num=num|(data<<24);
data=raf.read();
num+=data<<16;
data=raf.read();
num+=data<<8;
data=raf.read();
num+=data;
System.out.println(num);
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileDemo3 {
public static void main(String[] args) throws IOException {
File file=new File("o.dat");
if(!file.exists()){
file.createNewFile();
}
RandomAccessFile raf=new RandomAccessFile(file,"rw");
int max=Integer.MAX_VALUE;
raf.writeInt(max);
System.out.println(raf.getFilePointer());//4
raf.seek(0);
int num=raf.readInt();
System.out.println(num);
}
}
读写字符串
以UTF编码读写字符串
void writeUTF(String str):将字符串以UTF转化为字节后写出
String readUTF():将字节读取后按照UTF编码转化字符串
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileDemo4 {
public static void main(String[] args) throws IOException {
File file=new File("out.yml");
if(!file.exists()){
file.createNewFile();
}
RandomAccessFile raf=new RandomAccessFile(file,"rw");
String str="不知道写什么,随便来点吧:";
//将字符串以UTF-8编码写到文件中
raf.writeUTF(str);
raf.seek(0);
//以UTF-8编码从文件中将字符串读取出来
str=raf.readUTF();
System.out.println(str);
raf.close();
}
}