RandomAccessFile(随机访问文件流),也是一种文件的读写IO流,他实现了DataInputStream和DataOutputStream两个接口,因此他可以根据自己的方法实现对文件的读与写双重操作。
一:RandomAccessFile的特殊之处
RandomAccessFile提供了一种类似于文件指针的东西,他可以随着你对文件的读或者写操作来进行指针的移动,从而实现对文件的随机读取。具体的获取及相关操作就要用到接下来的几种常用方法了。
二:RandomAccessFile的常用方法
1:构造方法
RandomAccessFile 对象名称 = new RandomAccessFile(file,mode); 创建从中读取和向其中写入的随机访问文件流
◆file参数:进行具体操作所对应的文件
◆mode参数:指打开文件的具体访问模式,常用的有如下两种,其他可以参见帮助文档
“r”:以只读的方式打来文件(即对文件只能进行读操作)
"rw":以读和写的双重方式打开文件(即对文件可以进行读与写双重操作)
2:常用方法
(1)public long getFilePointer() throws IOException 获取当前文件指针相对于文件开头的偏移量
(2)public void seek(long pos) throws IOException 设置当前文件指针相对于文件开头的偏移量
(3)public long length() throws IOException 返回当前文件的长度
(4)基于各种类型的读操作,如readInt(),readChar()等
(5)基于各种类型的写操作,如writeInt(int v),writeChar(char ch)等
(6)public final String readLine() throws IOException 从文件中读一行操作
(7)public final String readUTF() throws IOException 从文件中读一个字符串,且该字符串已经用UTF8进行了编码
(8)public int skipBytes(int n) throws IOException 设置文件指针跳过的字节数,返回的为实际跳过的字节数,如果参数为负值,则不跳过任何字节
三:对方法整体运用的实例
|
结果:
|
四:随机文件访问流对BMP格式图片的反色处理
小知识:BMP格式的图片相对而言比较简单,前54个字节保存文件头信息,从54位以后一个像素用三个字节表示RGB。
分析:一个Byte位表示可以一种颜色,如果原来颜色的RGB值为i,那么粉色处理位置颜色为255-i。对图片的反色处理,可以理解为从54位开始读,在读到文件末尾之前,读一个反色处理一个,但这时应注意文件指针的指向位置。何时到达文件末尾?当当前文件指针位置大于文件长度减1时,到达文件尾。
具体实现如下:
|
测试之前:在测试之前应该在D盘根目录下提供一个bmp格式的图片
测试之后:
从而达到了BMP格式图片的反色处理。
转载于:https://blog.51cto.com/cinderella7/1265189