读/写(输入/输出)都是对我而言的,不是对你操作的对象而言的,比如读文件是我读文件,对我而言就是输入,和我写文件,对我而言就是输出。
package net.cszxxx.www;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
public class InsertContent {
public static void insert(String fileName,long pos,String insertContent)
throws IOException {
var temp = File.createTempFile("tmp", null);
temp.deleteOnExit();
try(
var raf = new RandomAccessFile(fileName,"rw");
var tmpOut = new FileOutputStream(temp);//我写文件,是输出流
var tmpIn = new FileInputStream(temp);//我读文件,就是输入流
){
//定位,将pos后边的内容放入临时文件
raf.seek(pos);
var buff = new byte[64];
var hasRead = 0;
while((hasRead = raf.read(buff)) > 0) {
tmpOut.write(buff, 0, hasRead);//我写文件,使用的输出流
}
//定位,将临时文件的内容插入到现有文件
raf.seek(pos);
raf.write(insertContent.getBytes());
while((hasRead = tmpIn.read(buff)) > 0) {//我读文件,使用输入流
raf.write(buff, 0, hasRead);
}
}
}
public static void main(String[] args) throws IOException {
InsertContent.insert("I:/out.txt", 10, "ceshi");
}
}