Java IO的RandomAccessFile的使用
2017-05-12 16:46
441 查看
参考:
Java IO的RandomAccessFile的使用
RandomAccessFile是Java中输入,输出流体系中功能最丰富的文件内容访问类,它提供很多方法来操作文件,包括读写支持,与普通的IO流相比,它最大的特别之处就是支持任意访问的方式,程序可以直接跳到任意地方来读写数据。
RandomAccessFile类中比较重要的2个方法如下,其他的方法和普通IO方法类似。RandomAccessFile包含InputStream的三个read方法,也包含OutputStream的三个write方法。同时RandomAccessFile还包含一系列的readXxx和writeXxx方法完成输入输出。
构造方法:
2、java代码:
运行效果:
控制台:
test.txt:
Java IO的RandomAccessFile的使用
RandomAccessFile是Java中输入,输出流体系中功能最丰富的文件内容访问类,它提供很多方法来操作文件,包括读写支持,与普通的IO流相比,它最大的特别之处就是支持任意访问的方式,程序可以直接跳到任意地方来读写数据。
RandomAccessFile类中比较重要的2个方法如下,其他的方法和普通IO方法类似。RandomAccessFile包含InputStream的三个read方法,也包含OutputStream的三个write方法。同时RandomAccessFile还包含一系列的readXxx和writeXxx方法完成输入输出。
getFilePointer() //返回文件记录指针的当前位置 seek(long pos) //将文件记录指针定位到pos的位置
构造方法:
/** * model各个参数详解 * r 代表以只读方式打开指定文件 * rw 以读写方式打开指定文件 * rws 读写方式打开,并对内容或元数据都同步写入底层存储设备 * rwd 读写方式打开,对文件内容的更新同步更新至底层存储设备 * **/ public RandomAccessFile(String name, String mode)
使用示例:
1、在电脑桌面新建test.txt,并输入以下数据:2、java代码:
import java.io.*; /** * Created by Administrator on 2017/5/12. */ public class RandomAccessTest { public static void main(String[] args) { String path = "C:\\Users\\Administrator\\Desktop\\test.txt"; //任意位置读取 int seekPointer = 20; randomRead(path, seekPointer);//读取的方法 //追加写 randomWrite(path);//追加写的方法 //插入数据 insert(path, 33, "\nlucene是一个优秀的全文检索库"); } /** * 读的方法 * * @param path 文件路径 * @param seekPointer 指针位置 **/ public static void randomRead(String path, int seekPointer) { try { /** * model各个参数详解 * r 代表以只读方式打开指定文件 * rw 以读写方式打开指定文件 * rws 读写方式打开,并对内容或元数据都同步写入底层存储设备 * rwd 读写方式打开,对文件内容的更新同步更新至底层存储设备 * * **/ RandomAccessFile raf = new RandomAccessFile(path, "r"); //获取RandomAccessFile对象文件指针的位置,初始位置是0 System.out.println("RandomAccessFile文件指针的初始位置:" + raf.getFilePointer()); raf.seek(seekPointer);//移动文件指针位置 byte[] buff = new byte[1024]; //用于保存实际读取的字节数 int hasRead = 0; //循环读取 while ((hasRead = raf.read(buff)) > 0) { //打印读取的内容,并将字节转为字符串输入 System.out.println(new String(buff, 0, hasRead)); } } catch (Exception e) { e.printStackTrace(); } } /** * 追加方式 * 写的方法 * * @param path 文件路径 ***/ public static void randomWrite(String path) { try { /**以读写的方式建立一个RandomAccessFile对象**/ RandomAccessFile raf = new RandomAccessFile(path, "rw"); //将记录指针移动到文件最后 raf.seek(raf.length()); raf.write("我是追加的 \r\n".getBytes()); raf.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 实现向指定位置 * 插入数据 * * @param fileName 文件名 * @param points 指针位置 * @param insertContent 插入内容 **/ public static void insert(String fileName, long points, String insertContent) { try { File tmp = File.createTempFile("tmp", null); tmp.deleteOnExit();//在JVM退出时删除 RandomAccessFile raf = new RandomAccessFile(fileName, "rw"); //创建一个临时文件夹来保存插入点后的数据 FileOutputStream tmpOut = new FileOutputStream(tmp); FileInputStream tmpIn = new FileInputStream(tmp); raf.seek(points); /**将插入点后的内容读入临时文件夹**/ byte[] buff = new byte[1024]; //用于保存临时读取的字节数 int hasRead = 0; //循环读取插入点后的内容 while ((hasRead = raf.read(buff)) > 0) { // 将读取的数据写入临时文件中 tmpOut.write(buff, 0, hasRead); } //插入需要指定添加的数据 raf.seek(points);//返回原来的插入处 //追加需要追加的内容 raf.write(insertContent.getBytes()); //最后追加临时文件中的内容 while ((hasRead = tmpIn.read(buff)) > 0) { raf.write(buff, 0, hasRead); } } catch (Exception e) { e.printStackTrace(); } } }
运行效果:
控制台:
RandomAccessFile文件指针的初始位置:0 he is a techter hadoop is perfect
test.txt:
i am is a person he is a techt lucene是一个优秀的全文检索库er hadoop is perfect 我是追加的
相关文章推荐
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用(1)
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用
- Java IO操作——简单了解RandomAccessFile随机读写文件操作类的使用
- [学习笔记]Java基础_IO(包含对象流序列化使用和RandomAccessFile 类的使用)
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用(转)
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用
- Java IO的RandomAccessFile的使用
- java io 笔记一:RandomAccessFile(随机访问) 类
- 【JAVA IO】_RandomAccessFile笔记
- Java中使用RandomAccessFile向文件最后写入内容
- java.io.RandomAccessFile
- Java RandomAccessFile的使用
- Java RandomAccessFile的使用
- JavaIO之RandomAccessFile随机访问文件
- java io系列26之 RandomAccessFile