RandomAccessFile
RandomAccessFile 基本操作
案例
import java.io.*;
public class TestMain09 {
public static void main(String[] args) throws Exception {
insert("D:\\home\\product\\aa.txt",2,"ni");
}
public static void insert(String filename,long pos,String insertContent) throws Exception {
File file = new File("D:\\home\\product\\aa.txt");
RandomAccessFile raf = null;
File tmp =new File("D:\\home\\product\\bb.txt");
FileOutputStream tmpOut = null;
FileInputStream tmpIn = null;
// tmp.deleteOnExit();
raf = new RandomAccessFile(filename,"rw");
tmpOut = new FileOutputStream(tmp);
tmpIn = new FileInputStream(tmp);
raf.seek(pos);
byte[] bbuf = new byte[64];
int hasRead = 0;
//使用循环方式读取插入点后的数据
while ((hasRead = raf.read(bbuf)) > 0) {
System.out.println(hasRead);
//将读取的数据写入临时文件
tmpOut.write(bbuf, 0, hasRead);
}
//----------下面代码插入内容----------
//把文件记录指针重新定位到pos位置
raf.seek(pos);
//追加需要插入的内容
raf.write(insertContent.getBytes());
//追加临时文件中的内容
while ((hasRead = tmpIn.read(bbuf)) > 0) {
System.out.println(hasRead);
raf.write(bbuf, 0, hasRead);
}
}
}
随机流可以做断点续传和指定位置读取文件或插入内容