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 ...
随机推荐
- CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案
CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...
- 【html/css】模态框的实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Android BitmapDrawable
功能:显示缩略图,大小为40*40 //通过openRawResource获取一个inputStream对象 InputStream inputStream = getResources().open ...
- The difference between creating a string object constructor and assigning it directly
字符串对象构造方法创建和直接赋值的区别? package com.itheima_02; /* * 通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象有什么区别呢? * 通过构造方法创建字符串 ...
- MUI框架-08-窗口管理-创建子页面
MUI框架-08-窗口管理-创建子页面 之前写过这一篇,不知道为什么被删了,我就大概写了,抱歉 创建子页面是为了,页面切换时,外面的页面不动,让 MUI 写出来的页面更接近原生 app 官方文档:ht ...
- python 并发socketserver模块
1.源码class 1.server类:处理链接 +------------+ | BaseServer | +------------+ | v +-----------+ +----------- ...
- ORM注意点
add:是追加 set:是覆盖
- 类型“Microsoft.Office.Interop.Word.ApplicationClass”错误 4317 无法嵌入互操作类型
类型“Microsoft.Office.Interop.Word.ApplicationClass”错误 4317 无法嵌入互操作类型“Microsoft.Office.Interop.Word.Ap ...
- C# 按位或,按位与, 按位异或
a != b -----> a = a | b , a 或者 b 只要有一个为 1, 那么,a 的最终结果就为 1 a &= b -----> a = a & b ...
- Linux入门-3 Linux磁盘及文件系统管理
1. 磁盘基本概念 1.1 磁盘结构:盘片(单碟vs多碟).磁头(读写数据) 1.2 磁盘在Linux中的表示 1.3 分区概念 2 使用fdisk进行磁盘管理 3 Linux文件系统 mke2fs ...