【java】RandomAccessFile读取txt文档分页并获取页末指针

本文介绍了如何使用Java的RandomAccessFile类读取txt文件并进行分页处理,每页5行。同时,讨论了RandomAccessFile的文件指针概念及其相关操作方法,如getFilePointer()和seek()。通过示例代码展示了具体实现,并提醒在处理中文时可能出现的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 . 目的

  • RandomAccessFile方式读取文件
  • 将文件按每页5行实现分页
  • 获取页末指针,为后续翻页准备

02 . RandomAccessFile简述

        RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持跳到文件任意位置读写数据,RandomAccessFile对象包含一个记录指针,用以标识当前读写处的位置,当程序创建一个新的RandomAccessFile对象时,该对象的文件记录指针对于文件头(也就是0处),当读写n个字节后,文件记录指针将会向后移动n个字节。除此之外,RandomAccessFile可以自由移动该记录指针。

(1) 创建类
  • RandomAccessFile raf = new RandomAccessFile(Filefile,String mode);
  • RandomAccessFile raf = new RandomAccessFile(Stringfilename,String mode);

这里的文件可以是一个file对象 也可以是一个file的抽象路径。另外如果该file不存在,则通过该对象的建立会自动生成一个file,相当于createNewFile了。所以,如果是不存在的文件,创建的file的前的目录必须存在,否则报找不到文件的错误。不再赘述,详情看file的createNewFile。

	File file=new File(API.txt);
	RandomAccessFile raf = new RandomAccessFile(file,"r");//只读方式打开

RandomAccessFile类在创建对象时,除了指定文件本身,还需要指定一个mode参数,该参数指定RandomAccessFile的访问模式,该参数有如下四个值:

r: 以只读方式打开指定文件。如果试图对该RandomAccessFile指定的文件执行写入方法则会抛出IOException
rw: 以读取、写入方式打开指定文件。如果该文件不存在,则尝试创建文件
rws: 以读取、写入方式打开指定文件。相对于rw模式,还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备,默认情形下(rw模式下),是使用buffer的,只有cache满的或者使用RandomAccessFile.close()关闭流的时候儿才真正的写到文件
rwd: 与rws类似,只是仅对文件的内容同步更新到磁盘,而不修改文件的元数据。

(2)文件指针

RandomAccessFile包含两个方法来操作文件记录指针:

  • long getFilePointer():返回文件记录指针的当前位置
  • void seek(long pos):将文件记录指针定位到pos位置

demo1.java:

/*
*此例演示指针用法
*/

import java.io.*;  
import java.lang.*;

public class demo1 {
   
   
	public static void main(String[] args) {
   
   		
		int pos=0;
		long point=0;
		String line=null;		
		try 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值