- /**
- *
- * @param skip 跳过多少过字节进行插入数据
- * @param str 要插入的字符串
- * @param fileName 文件路径
- */
- public static void insert(long skip, String str, String fileName){
- try {
- RandomAccessFile raf = new RandomAccessFile(fileName,"rw");
- if(skip < 0 || skip > raf.length()){//如果要跳过的字节数小于0或大于了原来文件的长度,则判定错误
- 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--){//从后往前读取并写入原字符串中跳过后的字符串。即你举的例子中的dfg,循环读取并写入gfd。
- raf.seek(i - b.length);//这是原来字符串的长度。i--就是向回读。
- byte temp = raf.readByte();
- raf.seek(i);//现字符串的末尾。
- raf.writeByte(temp);
- }
- raf.seek(skip);//将原字符串搬迁完毕后,写入新的字符串即可。
- raf.write(b);
- raf.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
复制代码
|