RandomAccessFile类——高效快捷地读写文件
RandomAceessFile类
RandomAccessFile常用方法和使用方式
- getFilePointer() :获取当前文件的记录指针位置
- seek(long pos):把记录指针移到pos处
- read()和write():读取内容和写入内容
- readXxx()和writeXxx():用于处理各种值类型
- writeBytes()和writeChars()可以写入字符串,编码不一致会造成乱码。所以推荐String.getBytes(),用write()来写入。
代码示例:
(一)RandomAccessFile读取文件内容
- //rw : 设置模式为读写模式
- RandomAccessFile raf = new RandomAccessFile("D:\\reviewIO\\runtime.txt","rw");
- System.out.println("当前记录指针位置:" + raf.getFilePointer());
- byte[] buf = new byte[];
- int len = ;
- while((len = raf.read(buf)) != -) {
- System.out.println(new String(buf));
- }
(二)RandomAccessFile写入数据到文件中
- public class Test {
- public static void main(String[] args) throws IOException {
- //要读写的数据源
- File f = new File("D:\\reviewIO\\RandomAccessFileTest.txt");
- //键盘输入作为数据来源
- Scanner sc = new Scanner(System.in);
- //指定文件不存在就创建同名文件
- if(!f.exists()) f.createNewFile();
- //rw : 设为读写模式
- RandomAccessFile raf = new RandomAccessFile(f,"rw");
- System.out.println("当前记录指针位置:" + raf.getFilePointer());
- while(true) {
- String str = sc.next();
- raf.writeBytes(str);
- System.out.println("当前记录指针位置:" + raf.getFilePointer());
- //输入end结束循环
- if(str.equals("end")) break;
- }
- }
- }
- 使用小结:RandomAccessFile写入数据到文件中不会覆盖文件内容。只要程序每运行一次,该类的记录指针总是为0,这意味着从文件最前端开始读写,所以需要注意。
(三)RandomAccessFile的记录指针放在文件尾部,用于添加内容
- public class Test {
- public static void main(String[] args) throws IOException {
- //读写的数据源
- File f = new File("D:\\reviewIO\\RAF.txt");
- //指定文件不存在就创建同名文件
- if(!f.exists()) f.createNewFile();
- //rw : 设为读写模式
- RandomAccessFile raf = new RandomAccessFile(f,"rw");
- System.out.println("当前记录指针位置:" + raf.getFilePointer());
- //记录指针与文件内容长度相等
- raf.seek(raf.length());
- System.out.println("当前文件长度:" + raf.length());
- //以字节形式写入字符串
- raf.write("ABCDEFG写入尾部".getBytes());
- System.out.println("当前记录指针位置:" + raf.getFilePointer());
- }
- }
- 使用小结:如果使用RandomAccessFile添加内容,要把记录指针设为同文件一样的长度,保证在文件的尾部进行写入数据。write()写入中文,使用String.getByte(),保证两者编码一致。
RandomAccessFile类——高效快捷地读写文件的更多相关文章
- 第31天学习打卡(File类。字符流读写文件)
File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法 File(String pathname) File(String parent,String child) ...
- RandomAccessFile、FileChannel、MappedByteBuffer读写文件
s package com.nio; import java.io.Closeable; import java.io.FileNotFoundException; import java.io.IO ...
- 在对文件进行随机读写,RandomAccessFile类,如何提高其效率
花1K内存实现高效I/O的RandomAccessFile类 JAVA的文件随机存取类(RandomAccessFile)的I/O效率较低.通过分析其中原因,提出解决方案.逐步展示如何创建具备缓存读写 ...
- JavaIO流(02)RandomAccessFile类详解
RandomAccessFile类 该类主要是对文件内容进行操作,可以随机的读取一个文件中指定位置的数据: 但是如果想实现这样的功能,则每个数据的长度应该保持一致: 构造方法: 接受File类 ...
- 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能--转载
主体: 目前最流行的J2SDK版本是1.3系列.使用该版本的开发人员需文件随机存取,就得使用RandomAccessFile类.其I/O性能较之其它常用开发语言的同类性能差距甚远,严重影响程序的运行效 ...
- 【Java IO流】RandomAccessFile类的使用
RandomAccessFile类的使用 RandomAccessFile类是java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. RandomAc ...
- Java RandomAccessFile类
RandomAccessFile类是Java中操作文件内容功能最强大的类,既可以读,也可以写. RandomAccessFile支持随机访问,可以直接访问文件的任意位置,在文件的任意位置读写数据.如果 ...
- 使用RandomAccessFile类对文件进行读写
1. RandomAccessFile类简介 前面一篇随笔<File类遍历目录及文件>中有说到,File类只能用于表示文件或目录的名称.大小等信息,而不能用于文件内容的访问.而当需要访 ...
- FileUtils【获取SD卡根目录、读写文件、移动、复制、删除文件、获取文件名、后缀名操作类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了获取SD卡根目录路径.以及对文件读写.获取文件名等相关操作. 因为需要用到android.permission.READ_EX ...
随机推荐
- Java内存模型(JMM)以及 垃圾回收机制 小结
内存模型: 内存模型描述了程序中各个变量(实例域.静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节,对象最终是存储在内存里面的,这点没有错,但是编译 ...
- VC++中如何将字符串转换成整型数字
原文:http://blog.csdn.net/yongf2014/article/details/47071663 注意: atoi函数是c的函数,它的输入参数是char *类型. 你声明了stri ...
- centos7上安装python3
一.安装环境及版本 CentOS 6.5 Python 3.6.1 二.安装依赖包 1.安装静态库 # yum install -y openssl-static 注:如果不安装该静态库,会导致pyt ...
- hibernate简单入门教程(一)---------基本配置
应用级别所以很粗浅 首先介绍一下hibernate框架: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 ...
- 排序算法(1) 快速排序 C++实现
快速排序基本特性 时间复杂度:O(n*lgn) 最坏:O(n^2) 空间复杂度:最好情况下:O(lgn),最坏情况:O(n),平均情况:O(lgn) 不稳定. 关于快速排序的空间复杂度,谢谢@命运他爹 ...
- Quick BI助力云上大数据分析---深圳云栖大会
在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. 大数据分析之路的挑 ...
- 计算机作业(Excel课程表) 物联网 王罗红
- ZT 理解class.forName()
理解class.forName() 分类: [Java SE 基础] 2012-05-17 07:53 3892人阅读 评论(3) 收藏 举报 classloaderclassjdbcejb数据库 目 ...
- Genymotion安卓模拟器和VirtualBox虚拟机安装、配置、测试(win7_64bit)
1.概述 VirtualBox是一个优秀的虚拟机软件,它可以在电脑上提供另一个操作系统的运行环境,使多个系统同时运行.VirtualBox支持的操作系统包括Windows.Mac OS X.Linux ...
- Salesforce和SAP HANA的元数据访问加速
Salesforce 在Jerry的其他文章曾经提到,Salesforce里运行时对象均是通过静态存储的元数据,经过Runtime engine加工而成的. Because metadata is a ...