首页 > 编程笔记 > Java笔记 阅读:24

Java RandomAccessFile类的用法(附带实例)

通义灵码
在 Java 中,RandomAccessFile 类既不是输入流类的子类,也不是输出流类的子类。使用 RandomAccessFile 类可以实现以下两个目的:
RandomAccessFile 类常用的构造方法如下:
RandomAccessFile(File file,String mode)
RandomAccessFile(String name,String mode)
其中,mode 用来决定创建的流对文件的访问权利,可以是 r、rw、rws 或 rwd。其中,r 代表只读,rw 代表可读/写,rws 代表同步写入,rwd 代表将更新同步写入。

除了构造方法,RandomAccessFile 类还有如下两个核心的方法:
【实例】RandomAccessFile类的应用。
  1. import java.io.RandomAccessFile;
  2.  
  3. public class Example {
  4. public static void main(String[] args) {
  5. RandomAccessFile randomf = null;
  6. try {
  7. randomf = new RandomAccessFile("D:\\3.txt", "rw");
  8. // 将若干数据写入文件中
  9. int[] data = new int[]{3, 8, 34, 333, 78, 21, 24, 43, 93, 555};
  10. for (int i = 0; i < data.length; i++) {
  11. // 在文件中写入一个数组元素
  12. randomf.writeInt(data[i]);
  13. }
  14. // 定位到第 4 个字节处
  15. randomf.seek(4);
  16. // 读取当前位置的数据
  17. System.out.println(randomf.readInt());
  18. // 隔一个读一个数据
  19. for (int i = 0; i < 10; i += 2) {
  20. randomf.seek(i * 4);
  21. System.out.print(randomf.readInt() + "\t");
  22. }
  23. System.out.println();
  24. // 在第 8 个字节的位置插入一个新的数据 38,替换之前的数据 34
  25. randomf.seek(8);
  26. randomf.writeInt(38);
  27. for (int i = 0; i < 10; i++) {
  28. randomf.seek(i * 4);
  29. // 输出文件中的每个数据
  30. System.out.print(randomf.readInt() + "\t");
  31. }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. } finally {
  35. try {
  36. if (randomf != null) {
  37. randomf.close();
  38. }
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. }
  44. }
运行结果为:
8
3    34   78    24    93
3    8    38    333   78     21    24   43    93    555

相关文章