randomaccessfile详解

randomaccessfile详解

ID:6032692

大小:77.00 KB

页数:10页

时间:2017-12-31

randomaccessfile详解_第1页
randomaccessfile详解_第2页
randomaccessfile详解_第3页
randomaccessfile详解_第4页
randomaccessfile详解_第5页
资源描述:

《randomaccessfile详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.RandomAccessFile1.RandomAccessFile是Java输入输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它即可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持“随机访问”的方式,程序可以直接跳转到文件的任意地方来读写数据。注意:“随机访问”错误的理解是:随机访问是具有不确定性的:具有一会儿访问这里、一会儿访问哪里的意思!RandomAccess的含义:应该是任意访问,而不是随机访问,也就是说RAM

2、(随机存取存储器)是可以自由访问任意的存储点的存储器(与磁盘、磁带等需要寻道、倒带才可以访问指定存储点等存储器区分);而RandomAccessFile的含义是可以自由访问文件的任意地方(与InputStream、Reader需要依次向后读取区分),所以,RandomAccessFile的含义不是“随机访问”,而应该是“任意访问”。由于这个原因,如果我们希望只访问文件部分内容,而不是把文件从头到尾,使用RandomAccessFile将是更好的选择。2.RandomAccessFile类有两个构造器,其实两

3、个构造器基本相同,只是指定文件的形式不同而已:一个使用String参数来指定文件名,一个使用File参数来指定文件本身。RandomAccessFile是一个很有用的类,可以将字节流写入到磁盘文件中,对应的也可以从磁盘文件中读取出字节流,在API中关于RandomAccessFile的描述如下:此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型byte数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针

4、。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过getFilePointer方法读取,并通过seek方法设置。通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出EOFException(是一种IOException,文件结尾了还继续读文件,就导致这个错误抛出。本来EOF的数值就是-1,但是是一种用于错误标识的记号)。如果由于某些原因无法

5、读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出IOException,而不是EOFException。需要特别指出的是,如果流已被关闭,则可能抛出IOException。以下是两个RandomAccessFile的写入和读取的简单例子:1、 将字节流写入到磁盘中privatestaticvoidtestCreateFile(){Stringdirectory=“D:/program/test”;Stringname=“t.gen”;Filef=newFile(directory,name

6、);RandomAccessFilefile=null;try{file=newRandomAccessFile(f,“rw”);byte[]b={5,10,15,20};try{//如果没有这行,文件也会生成,只是文件为空file.write(b,0,4);}catch(IOExceptione){e.printStackTrace();}}catch(FileNotFoundExceptione){e.printStackTrace();}finally{if(null!=file){try{file.

7、close();}catch(IOExceptione){e.printStackTrace();}}}}2、 从磁盘文件中读取字节流privatestaticvoidtestReadFile(){Stringdirectory=“D:/program/luceneDemo3.0/test”;Stringname=“t.gen”;Filef=newFile(directory,name);RandomAccessFilefile=null;try{file=newRandomAccessFile(f,“rw

8、”);byte[]b=newbyte[4];try{longlen=file.length();file.read(b);//设置要读取的字节位置file.seek(1);System.out.println(file.readByte()+”>>FilePointer>>”+file.getFilePointer());for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。