RabdomAccessFile类
- RabdomAccessFile声明在java.io包下,但直接继承于java.lang.Object类,并且实现了DataInput和DataOutput这两个接口,也就是说这个类既可以读也可以写
- RabdomAccessFile类支持“随机访问”的方式,程序可以直接跳到文件的任意地方来读、写文件
- RabdomAccessFile对象包含一个记录指针,用来标识当前读写处的位置
- long getFilePointer():获取文件记录指针的当前位置
- void seek(long pos):将文件记录指针定位到pos位置
- 构造器:
- public RabdomAccessFile(File file,String mode)
- public RabdomAccessFile(String name,String mode)
- 创建RabdomAccessFile类实例需要指定一个mode参数,该参数指定RabdomAccessFile的访问模式:
- r:以只读方式打开
- rw:打开以便读取和写入(读取时文件不存在会创建一个文件)
- rwd:打开以便读取和写入;同步文件内容的更新
- rws:打开以便读取和写入,同步文件内容和元数据的更新
package www.bh.c.iotest;
import java.io.*;
public class Test18 {
public static void main(String[] args) {
RandomAccessFile raf = null;
RandomAccessFile raf1 = null;
try {
raf = new RandomAccessFile(new File("calss\\Java.png"),"r");
raf1 = new RandomAccessFile(new File("calss\\Java1.png"), "rw");
byte[] b = new byte[3];
int len;
while ((len=raf.read(b))!=-1){
raf1.write(b,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (raf!=null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (raf1!=null){
try {
raf1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package www.bh.c.iotest;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test19 {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("calss\\hello1.txt"),"rw");
raf.write("无边落木萧萧下".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (raf!=null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package www.bh.c.iotest;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test20 {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("calss\\hello1.txt"),"rw");
raf.seek(3);
raf.write("黄河入海流".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (raf!=null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package www.bh.c.iotest;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test21 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("calss\\hello1.txt"), "rw");
raf.seek(0);
StringBuilder stringBuilder = new StringBuilder((int) new File("hello1.txt").length());
byte[] b =new byte[1024];
int len;
while ((len=raf.read(b))!=-1){
stringBuilder.append(new String(b,0,len));
}
raf.seek(0);
raf.write("登高\n杜甫\n".getBytes());
raf.write(stringBuilder.toString().getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (raf!=null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}