黑马程序员技术交流社区
标题:
用RandomAccessFile如何在文件指定位置插入数据?
[打印本页]
作者:
刘焕新
时间:
2013-3-26 19:55
标题:
用RandomAccessFile如何在文件指定位置插入数据?
本帖最后由 刘焕新 于 2013-3-30 12:27 编辑
刚学习到IO流的RandomAccessFile类,据了解,此类可读又可写,其内部缓冲区是个大型byte数组。通过操作文件指针,可在指定位置进行数据读/写。
但是我发现此写入操作是替换行为,而不是插入行为,也就是说是把之前位置的数据替换掉了,原来的数据被覆盖了。
所以我问题来了,请问在这种情况下,如何在指定位置插入数据而不覆盖原有数据?
作者:
lucy198921
时间:
2013-3-27 10:43
/**
*
* @param skip 跳过多少过字节进行插入数据
* @param str 要插入的字符串
* @param fileName 文件路径
*/
public static void beiju(long skip, String str, String fileName){
try {
RandomAccessFile raf = new RandomAccessFile(fileName,"rw");
if(skip < 0 || skip > raf.length()){
System.out.println("跳过字节数无效");
return;
}
byte[] b = str.getBytes();
raf.setLength(raf.length() + b.length);
for(long i = raf.length() - 1; i > b.length + skip - 1; i--){
raf.seek(i - b.length);
byte temp = raf.readByte();
raf.seek(i);
raf.writeByte(temp);
}
raf.seek(skip);
raf.write(b);
raf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2