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 ...
随机推荐
- 【JavaScript】闭包应用之数据独立
在平常的开发中,总有一些方法我们在不同的地方都有用的,因此我们会把这些方法封装起来.当我们需要在开发一个功能的时候需要用到一个组合函数(多个函数之间有联系,即有一个或多个共同的全局变量)且这个组合 ...
- 排查 Azure 虚拟机的远程桌面连接问题
与基于 Windows 的 Azure 虚拟机 (VM) 的远程桌面协议 (RDP) 连接可能会因各种原因而失败,使用户无法访问 VM. 问题可能出在 VM 上的远程桌面服务.网络连接或主计算机上的远 ...
- 一些baidu面经
百度问的一些问题供参考: 1. epoll 和 select,epoll 两种模式,阻塞非阻塞: 2. 两个严格递增链表找出相同的元素组成新的链表: ref1 ref 3. 网络传输中如何传送一个 ...
- 数组list操作,切片
a=range(10) a[11:0:-1] #倒序输出 a[0:9:2] #输出2,4,6,8 a[-3:] #输出7,8,9 a.append(11) #追加一个元素 a.count(11) #统 ...
- 使用NPOI 2.1.1读取EXCEL2003/2007返回DataTable
winform中打开excel的筛选器设置为:openFileDialog.Filter = "Excel 文件(*.xls)|*.xls;*.xlsx"; 一,不借助插件读取Ex ...
- Java的MD5加密和解密
链接:http://www.cnblogs.com/android-blogs/p/5305598.html Java的MD5加密和解密 简单demo: import java.security.* ...
- java继承-重写-super实例补充
方法重写: 是指子类根据需要父类继承来的方法进行改写,是多态机制的前奏. 重写注意点: 1.重写方法必须和被重写方法具有相同的方法名,参数列表和返回值. 2.重写方法方法不能使用比被重写方法更严格的访 ...
- Intellij IDEA常用快捷键和一些配置——Mac版
常用的快捷键 代码补全Ctrl + space 删除行Command + D 注释Command + / 导入包Command + shift + O 格式化代码Command + shift + F ...
- yarn logs -applicationId [applicationID]
yarn logs -applicationId application_1435648583743_0001 报错: tmp/logs/.../application_1435648583743_0 ...
- 本地缓存和redis
项目中的传统架构在服务启动时 读取数据库的大部分数据到本地内存,在看到redis的作用时发出疑问,到底有什么样的区别以及怎么选择呢,下面是别人的回答 使用本地缓存快还是使用redis缓存好? Redi ...