※ java.io.RandomAccessFile类
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。
※ 代码如下:
package com.briup.IO;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFIleTest {
public static void main(String[] args) {
//第一个参数可以指路径或File文件类型
//第二个参数表示的是权限 r表示只读w表示只写
RandomAccessFile raf=null;
try {
raf=
new RandomAccessFile("src/com/briup/IO/IO.txt", "r");
//读到行末返回null值
String str=null;
while((str=raf.readLine())!=null){
byte[] b=str.getBytes("ISO8859-1");
String ss=new String(b,"UTF-8");
System.out.println(ss);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(raf!=null)raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.briup.IO;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFIleTest1 {
public static void main(String[] args) {
RandomAccessFile raf=null;
try {
raf=
new RandomAccessFile("src/com/briup/IO/IO1.txt", "r");
String str=null;
//seek方法在读之前调用,在标记的下一个位置读取
//raf.seek(9);
while((str=raf.readLine())!=null){
byte[] b=str.getBytes("ISO8859-1");
String ss=new String(b,"UTF-8");
System.out.println(ss);
}
//获取文件的偏移位置
long pointer=raf.getFilePointer();
System.out.println(pointer);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(raf!=null)raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.briup.IO;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFIleTest2 {
public static void main(String[] args) {
RandomAccessFile raf=null;
try {
raf=
new RandomAccessFile("src/com/briup/IO/IO1.txt", "rw");
// raf.writeBoolean(false);
// raf.writeDouble(18D);
raf.writeUTF("中国");
//存值和取值顺序一样,多次存入值是覆盖效果
// System.out.println(raf.readBoolean());
// System.out.println(raf.readDouble());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(raf!=null)raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}