原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。

创建一个RandomAccessFile

在使用RandomAccessFile之前,必须初始化它。这是例子:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");

请注意构造函数的第二个参数:“rw”,表明你以读写方式打开文件。请查阅Java文档获知你需要以何种方式构造RandomAccessFile。

在RandomAccessFile中来回读写

在RandomAccessFile的某个位置读写之前,必须把文件指针指向该位置。通过seek()方法可以达到这一目标。可以通过调用getFilePointer()获得当前文件指针的位置。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 file.seek(200);
4  
5 long pointer = file.getFilePointer();
6  
7 file.close();

读取RandomAccessFile

RandomAccessFile中的任何一个read()方法都可以读取RandomAccessFile的数据。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 int aByte = file.read();
4  
5 file.close();

read()方法返回当前RandomAccessFile实例的文件指针指向的位置中包含的字节内容。Java文档中遗漏了一点:read()方法在读取完一个字节之后,会自动把指针移动到下一个可读字节。这意味着使用者在调用完read()方法之后不需要手动移动文件指针。

写入RandomAccessFile

RandomAccessFile中的任何一个write()方法都可以往RandomAccessFile中写入数据。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 file.write("Hello World".getBytes());
4  
5 file.close();

与read()方法类似,write()方法在调用结束之后自动移动文件指针,所以你不需要频繁地把指针移动到下一个将要写入数据的位置。

RandomAccessFile异常处理

为了本篇内容清晰,暂时忽略RandomAccessFile异常处理的内容。RandomAccessFile与其他流一样,在使用完毕之后必须关闭。想要了解更多信息,请参考Java IO异常处理

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: RandomAccessFile

Java IO: RandomAccessFile的更多相关文章

  1. Java IO RandomAccessFile 任意位置读/写

    随机读写类 RandomAccessFile的唯一父类是Object,与其他流父类不同.是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必 ...

  2. 使用java.io.RandomAccessFile更改文本文件的内容

    原文本内容: 2020-01-21 08:31:08.520 [main] INFO logbackCfg.App -秦时明月汉时关 2020-01-21 08:31:08.521 [main] ER ...

  3. [Java IO]01_File类和RandomAccessFile类

    File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作.   File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...

  4. java io系列26之 RandomAccessFile

    本文主要介绍 RandomAccessFile. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_26.html 更多内容请参考:java io系列0 ...

  5. Java—IO流 RandomAccessFile类

    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byt ...

  6. Java IO 之 RandomAccessFile 操作文件内容

    RandomAccessFile类实现对文件内容的随机读写 文件内容的随机操作,重难点在于字符操作,具体查看API package org.zln.io.file; import java.io.IO ...

  7. Java IO体系之RandomAccessFile浅析

    Java IO体系之RandomAccessFile浅析 一.RandomAccessFile综述: 1.1RandomAccessFile简介 RandomAccessFile是java Io体系中 ...

  8. java - day012 - 异常 , throws, throw , IO ,RandomAccessFile

    异常 封装错误信息的对象 错误信息 类型        例如: NullPointerExce 空指针 提示消息  出错的行号 异常的继承结构 Throwable | - Error 系统级错误 | ...

  9. Java IO 流 -- 随机读取和写入流 RandomAccessFile (文件分割和合并)

    RandomAccessFile 相对其它流多了一个seek() 方法指定指针的偏移量. 1.指定起始位置读取剩余内容 public static void test01() throws IOExc ...

随机推荐

  1. MobX 在 hook 中的使用

    关于 mobX 在 react 16.8.0 以上的用法 以下例子均取自官网文档 一般用法: import { observer, useLocalStore } from 'mobx-react'; ...

  2. textarea高度自适应解决方法

    引入autosize.js <script src="./autosize.js"></script> autosize(document.getEleme ...

  3. ccf-csp 任务调度,回溯算法我觉得ok神**wa了

    #include<iostream> #include<string.h> #include<cmath> #define M 41 #define min(a,b ...

  4. deque & list

    deque 双向队列 它也是采用动态数组的方式来管理的提供了随机数组 和vector的区别 1.deque头尾两端可以开放,能够进行快速的插入和删除(vector只能在尾部进行快速的插入和删除) 2. ...

  5. windows下CreateDirectory创建路径失败的解决办法

    第一: 权限不够: SECURITY_ATTRIBUTES sa;SECURITY_DESCRIPTOR sd; InitializeSecurityDescriptor(&sd,SECURI ...

  6. C++类的访问控制关键字

    public:修饰的成员变量和函数,可以在类的内部和类的外部被访问. private:修饰的成员变量和函数,只能在类的内部被访问,不能在类的外部被访问. protected:修饰的成员变量和函数,只能 ...

  7. MinGW,gcc

    http://www.itdaan.com/blog/2018/01/14/6b7b0613ca61d8c0ea06817f5dd2842b.html https://bbs.feng.com/rea ...

  8. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:读取MNIST手写图片数据写入的TFRecord文件

    import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_dat ...

  9. C++ lock_guard 互斥锁

    概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁.最终的 ...

  10. sklearn包

    sklearn官方学习资料 https://scikit-learn.org/stable/user_guide.html 1 Supervised learning监督学习 1.1 线性模型 1.2 ...