没有合适的资源?快使用搜索试试~ 我知道了~
首页RandomAccessFile类的用法.doc
RandomAccessFile类的用法.doc
需积分: 14 159 浏览量
更新于2023-05-27
评论
收藏 160KB DOC 举报
RandomAccessFile类的用法.docRandomAccessFile类的用法.docRandomAccessFile类的用法.doc
资源详情
资源评论
资源推荐

java 笔记:RandomAccessFile 例
子和浅析
是一个很有用的类,可以将字节流写入到磁盘文件中,对应的也可以
从磁盘文件中读取出字节流,在 中关于 的描述如下:
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统
中的一个大型 数组。存在指向该隐含数组的光标或索引,称为
文件指针
;输入操作
从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以
读取写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字
节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。
该文件指针可以通过 方法读取,并通过 方法设置。
通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出
(是一种 )。如果由于某些原因无法读取任何字节,而不是在读
取所需数量的字节之前已到达文件末尾,则抛出 ,而不是 。需要
特别指出的是,如果流已被关闭,则可能抛出 。
以下是两个 的写入和读取的简单例子:
、 将字节流写入到磁盘中
!
"#$%&'(
"#$)'(
*#+, (
-#.(
!
-#+*,$+' (
/0#!1,2,1,324(
!
如果没有这行,文件也会生成,只是文件为空
-)+,2,5 (
46 !
)"7 (
4
468. !
)"7 (
4-!
*.9#- !
!
-) (
46 !
)"7 (
4
4
4

4
3、 从磁盘文件中读取字节流
!
"#$%&.%:)2'(
"#$)'(
*#+, (
-#.(
!
-#+*,$+' (
/0#+/50(
!
#-)6 (
-) (
设置要读取的字节位置
-) (
").)-); <'===='<-) (
*#2(>)6(<< !
").)$==='</0 (
4
46 !
)"7 (
4
468. !
)"7 (
4-!
*.9#- !
!
-) (
46 !
)"7 (
4
4
4
4
说明:
、 这个类依我看来,用来处理字节流 是很好的,如果用来处理字符串 或其他数
据类型,比如 、,我试了感觉效果并不好,尤其是处理中文字符串的时候,那简
直就是一个灾难,你会又碰上纠缠不清的乱码!
2、 seek(longpos)方法
是在读取的时候用来设置读取到哪一个字节的,比如在例子中有 1,2,1,32 字节,在
数组中分别对应 2、、3、: 位置,同样在文件 -#+*,
$+' (中,也对应着 2、、3、: 位置,所以如果设置 -) (就表示通过
-); 读取的时候,读取的是第 位置的数据,也就是 2 了。
3、 getFilePointer()方法

在通过上面说的 seek? 设置后, 得到的就是当前文件中的字
节位置,也就是所说的偏移量了。比如在这个例子中, 的值就是 )
4、文件模式
$'以只读方式打开。调用结果对象的任何 +方法都将导致抛出 。
$+'打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
$+'打开以便读取和写入,对于 “+',还要求对文件的内容或元数据的每个更新都同步
写入到底层存储设备。
$+'??打开以便读取和写入,对于 “+',还要求对文件内容的每个更新都同步写入到底
层存储设备。
附录:
close
关闭此随机访问文件流并释放与该流关联的所有系统资源。
6
getChannel
返回与此文件关联的唯一 6对象。
%
getFD
返回与此流关联的不透明文件描述符对象。
getFilePointer
返回此文件中的当前偏移量。
length
返回此文件的长度。
read
从此文件中读取一个数据字节。
read/0?
将最多 )6个数据字节从此文件读入 数组。
read/0?,?@,?
将最多 个数据字节从此文件读入 数组。
readBoolean
从此文件读取一个 。
readByte
从此文件读取一个有符号的八位值。
6
readChar
从此文件读取一个字符。
.
readDouble
从此文件读取一个 .。
A
readFloat
从此文件读取一个 A。
readFully/0?
将 )6个字节从此文件读入 数组,并从当前文件指针开始。
readFully/0?,?@,?
将正好 个字节从此文件读入 数组,并从当前文件指针开始。
readInt
从此文件读取一个有符号的 :3位整数。
" readLine

从此文件读取文本的下一行。
readLong
从此文件读取一个有符号的 B5位整数。
6
readShort
从此文件读取一个有符号的 B位数。
readUnsignedByte
从此文件读取一个无符号的八位数。
readUnsignedShort
从此文件读取一个无符号的 B位数。
"
readUTF
从此文件读取一个字符串。
seek?
设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或
写入操作。
setLength?+C6
设置此文件的长度。
skipBytes?
尝试跳过输入的 个字节以丢弃跳过的字节。
write/0?
将 )6个字节从指定 数组写入到此文件,并从当前文件指针
开始。
write/0?,?@,?
将 个字节从指定 数组写入到此文件,并从偏移量 @处开始。
write?
向此文件写入指定的字节。
writeBoolean?
按单字节值将 写入该文件。
writeByte?
按单字节值将 写入该文件。
writeBytes"
按字节序列将该字符串写入该文件。
writeChar?
按双字节值将 6写入该文件,先写高字节。
writeChars"
按字符序列将一个字符串写入该文件。
writeDouble.?
使用 %.类中的 .7C;方法将双精度参数转换为一个
,然后按八字节数量将该 值写入该文件,先定高字节。
writeFloatA?
使用 类中的 A7;方法将浮点参数转换为一个 ,然后
按四字节数量将该 值写入该文件,先写高字节。
writeInt?
剩余17页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0