- 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 main(String[] args) throws IOException {
- insert("G:\\Code\\FileDemo.java", 120, "这是插入的内容\r\n");
- }
- private static void insert(String fileName, int pos, String content) throws IOException {
- //static File createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
- File tmp = File.createTempFile("tmp", null);
- //void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
- tmp.deleteOnExit();
- RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
- //创建一个临时文件来保存插入点后的数据
- FileOutputStream fos = new FileOutputStream(tmp);
- FileInputStream fis = new FileInputStream(tmp);
- //将指针移动到插入位置
- raf.seek(pos);
- /*
- * 将插入点后的内容读入临时文件中保存
- * */
- byte[] bys = new byte[1024];
- int len = 0;
- while((len = fis.read(bys)) != -1)
- {
- //将数据写入临时文件
- fos.write(bys, 0, len);
- }
- /*
- * 插入内容
- * */
- //把文件指针重新定位到pos位置
- raf.seek(pos);
- raf.write(content.getBytes());
- while((len = fis.read(bys)) != -1)
- {
- raf.write(bys, 0, len);
- }
- }
- }
复制代码 测试结果:能够向文本插入内容,但还是会替换掉相应的字节数,这个程序哪里有问题?求解答
|