课程信息:
- 课程名称:文件传输基础——Java IO流
- 章节名称:RandomAccessFile基本操作
- 讲师姓名:Cedar
课程内容:
RandomAccessFile操作步骤如下:
- java文件模型:在硬盘上的文件是byte byte byte 存储的,是数据的集合;
- 打开文件:有两种模式 “rw”(读写) “r”(只读)
RandomAccessFile raf = new RandomAccessFile (file, “rw”);
文件指针,打开文件时指针在开头 point = 0; - 写方法:raf.write(int) —> 只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
- 读方法:int b = raf.read() —> 读一个字节
- 关闭:文件读写完成以后一定要关闭(Oracle官方说明,若不关闭会产生意想不到的错误)
public static void main(String[] args) throws IOException {
File demo = new File("demo");
if(!demo.exists()){
demo.mkdir();
}
File file = new File("raf.dat");
if(!file.exists()){
file.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(raf.getFilePointer());
raf.write(1);
System.out.println(raf.getFilePointer());
raf.write('B');
int i = 0x7fffffff;
System.out.println(i);
raf.write(i >>> 24);
raf.write(i >>> 16);
raf.write(i >>> 8);
raf.write(i);
System.out.println(raf.getFilePointer());
//可以直接写一个int
raf.writeInt(i);
String s = "中";
byte[] gbk = s.getBytes("gbk");
raf.write(gbk);
System.out.println(raf.length());
//读文件,必须把指针移到头部
raf.seek(0);
//一次性读取,把文件中的内容都读到字节数组中
byte[] buf = new byte[(int)raf.length()];
raf.read(buf);
System.out.println(Arrays.toString(buf));
for (byte b: buf) {
System.out.println(Integer.toHexString(b & 0xff)); //16进制输出
}
raf.close(); //关闭操作
}
学习心得:
本次学习我学习了类的操作流程,这对于我们新手了解一个类来说是非常重要的步骤,JAVA提供的操作文件需要五步,通过本次学习会加深我们对类的了解,老师讲的非常好呀,是非常适合我的学习方式!