RandomAccessFile
RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。
RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。
基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream结合起来,再加上它自己的一些方法,比如定位用的getFilePointer( ),在文件里移动用的seek( ),以及判断文件大小的length( )、skipBytes()跳过多少字节数。此外,它的构造函数还要一个表示以只读方式("r"),还是以读写方式("rw")打开文件的参数 (和C的fopen( )一模一样)。它不支持只写文件。
本人计划用RandomAccessFile类进行文件的读取,用于查找索引中记录的文件的位置。
但是遇到乱码的问题,后来解决了。
代码如下:
import java.io.*; public class RandomFileAccessTest { public static void main(String[] args) throws IOException { long finishedFileSize = 1000 ; File newFile = new File("d:\\result.txt"); //文件大小 long fileSize = newFile.length(); RandomAccessFile raf = new RandomAccessFile(newFile, "r"); raf.seek(finishedFileSize); int offset = 500 ; //无乱码 // byte[] b = new byte[1024]; // raf.read(b, 0, offset); // System.out.println(new String(b)); //返回1500,当前指针的位置。 1500 = 1000 + 500 = finishedFileSize + offset // System.out.println(raf.getFilePointer()); //乱码 -- 解决了 //在Windows下raf会默认编码成8859_1 while(raf.read()!=-1){ System.out.println(new String(raf.readLine().getBytes("8859_1"),"gbk")); System.out.println("current pointer offset:"+raf.getFilePointer()); } raf.close(); } }
相关推荐
RandomAccessFile 解决乱码
NULL 博文链接:https://x7700.iteye.com/blog/1003918
花1K内存实现高效I-O的RandomAccessFile类 自己搜搜这个关键字. 我主要是用来优化Android上多线程断点下载的写文件效率 RandomAccessFile是操作硬盘的,比操作内存的数据慢了几百万倍, 所有有人做出优化,我特上传...
使用RandomAccessFile流将一个文本文件读出,并导致写入到另一个文件当中。
RandomAccessFile类的用法.docRandomAccessFile类的用法.docRandomAccessFile类的用法.doc
【IT十八掌徐培成】Java基础第26天-06.FileChannel-RandomAccessFile-CopyFile.zip
因为使用其他文件流修改文件时是整体的替换,导致SVN上传上去后是整个文件都修改了,所以需要增量修改,这个demo是使用RandomAccessFile增量修改,只修改指定的行,很实用
本篇文章主要介绍了Java使用RandomAccessFile类对文件进行读写,详细的介绍了RandomAccessFile类的使用技巧和实例应用,有兴趣的可以了解一下
NULL 博文链接:https://chaoyi.iteye.com/blog/2083498
最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。1.2版本解决了前面版本读取文件速度慢的...
花1K内存实现高效IO的RandomAccessFile类.doc
File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型字节流、打印流、对象序列化流、字节数组流)、字符流(缓冲字符流、文件字符流、转换流、格式化输出流、字符数组流) 这份代码源码...
主要介绍了java使用RandomAccessFile类基于指针读写文件实例代码,具有一定参考价值,需要的朋友可以了解下。
对文件夹里面的文件进行分类,配置文件是config.xml,文件包含同一个关键字的放入同一个文件夹,不支持对文件夹的分类,所有的操作利用了RandomAccssFile进行文件复制
Java中正确使用RandomAccessFile向文件中写入中文
java api中的java.io.RandomAccessFile类实现文件的随机写入.
RandomAccessFile处理文件的案例
RandomAccessFile随机文本,使用多线程处理复制文件
在JAVA程序设计不少涉及到对文件的读写操作,本例针对这方面的问题,介绍RandomAccessFile类的文件读写操作,文件中包含有1个java文件和1个class文件
【IT十八掌徐培成】Java基础第16天-01.RandomAccessFile.zip