A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心在左边跳 中级黑马   /  2015-7-9 14:09  /  410 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • 随机访问文件,自身具备读取方法
  • 通过SkipBytes(int x),seek(int x)到达随机访问。
  1. import java.io.FileNotFoundException;
  2. import java.io.IOException;
  3. import java.io.RandomAccessFile;
  4. /**
  5. * 该类不算IO体系中子类,直接继承Object
  6. *但是它是IO包中成员,因为它具备读和写功能
  7. *内部封装了一个数组,而且通过指针对数组的数据元素进行操作
  8. *可以通过getFilePointer获取指针位置
  9. *seek改变指针位置
  10. *
  11. *其实完成读写的原理就是内部封装了字节输入流和输出流
  12. *通过构造函数可以看出,该类只能操作文件。而且操作文件还有模式
  13. *只读r,读写rw等
  14. *如果模式只读r,不会创建文件,会读取一个存在文件,如果文件不存在,出现异常
  15. *如果模式读写rw,操作的文件不存在,自动创建如果存在,不会覆盖。
  16. */
  17. public class RandomAccessFileDemo {
  18.     public static void main(String[] args) throws IOException {
  19.         RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
  20.         raf.write("李斯".getBytes());
  21.         //按四个字节将 int 写入该文件,先写高字节。
  22.         raf.writeInt(97);
  23.         raf.close();
  24.         RandomAccessFile raf1=new RandomAccessFile("ran.txt","rw");
  25.         byte[] buf=new byte[4];
  26.         raf1.read(buf);
  27.         System.out.println(new String(buf));
  28.         //调整指针
  29.         //raf1.seek(4);
  30.         //跳过指定的字节数,只能向后跳
  31.         raf.skipBytes(0);
  32.         int age =raf1.readInt();
  33.         System.out.println(age);
  34.         raf1.close();
  35.         writeFile();
  36.     }
  37.     //随机写数据
  38.     public static void writeFile() throws IOException{
  39.         RandomAccessFile raf=new RandomAccessFile("ran.txt","rw");
  40.         raf.seek(8*3);
  41.         raf.write("周期".getBytes());
  42.         raf.writeInt(100);
  43.         raf.close();
  44.     }
  45. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马