Java如何向指定文件操作一段内容(增加,删除均可使用本方法)
更新时间:2023年12月16日 10:12:21 作者:木昜楊的书
这篇文章主要介绍了Java如何向指定文件操作一段内容(增加,删除均可使用本方法),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java向指定文件指定内容插入需要替换的内容
之前查看了许多的博客发现很少有人提及段落更换的方法
刚好因为工作需要便写了这个小功能
可以替换掉自己想要替换的一个片段而不是某一行或者在末尾添加内容。
package com.yk.replace; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; /** * RandomAccessFile向指定文件,指定位置插入内容 * 1.先使用File的createTempFile创建一个临时文件 * 2.将插入以后的文件内容(末尾节点开始后的内容)保存到临时文件中 * 3.程序重新定位到插入点,将要插入的内容保存到节点后 * 4.这样就相当于完成了文件的拼接 * * @author yangkai */ public class InsertContent { public static void insert(String fileName, String startContext, String endContext, String insertContent) throws IOException { RandomAccessFile raf = null; // 创建临时文件保存插入点后数据 File tmp = File.createTempFile("tmp", null); FileOutputStream tmpout = null; FileInputStream tmpin = null; // 定位节点使用,readline方法不能识别\r\n,因此需要自己添加进去,最开始因为这个检索节点始终不准耽误了很长时间 StringBuffer buffer = new StringBuffer(); BufferedReader bf = new BufferedReader(new FileReader(fileName)); String s = null; while ((s = bf.readLine()) != null) {// 使用readLine方法,一次读一行 buffer.append(s + "\r\n"); } String xml = buffer.toString(); long posStatr = xml.indexOf(startContext) + startContext.length() + 2; long posEnd = xml.indexOf(endContext); tmp.deleteOnExit();// jvm退出的时候删除临时文件 try { raf = new RandomAccessFile(fileName, "rw"); tmpout = new FileOutputStream(tmp); tmpin = new FileInputStream(tmp); raf.seek(posEnd); // 将插入点后的内容读入临时文件中保存 byte[] bbuf = new byte[64]; int hasRead = 0; while ((hasRead = raf.read(bbuf)) > 0) { tmpout.write(bbuf, 0, hasRead); } // 把文件记录指针定位到pos raf.seek(posStatr); raf.write(insertContent.getBytes()); while ((hasRead = tmpin.read(bbuf)) > 0) { raf.write(bbuf, 0, hasRead); } } finally { raf.close(); } } public static void main(String[] args) throws IOException { insert("filePath","posStart","posEnd", "replaceContext\r\n"); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解
延迟初始化(Lazy Initialization)是一种在需要时才创建或加载对象的策略,以减少启动时间和资源消耗,本文就来讲讲延迟初始化的具体使用吧2023-05-05程序包org.springframework不存在的解决办法
这篇文章主要介绍了程序包org.springframework不存在的解决办法,在使用IDEA创建SpringBoot项目时,刚打开无法正常运行,本文通过图文结合的方式给大家介绍的非常详细,具有一定参考价值,需要的朋友可以参考下2024-07-07基于JAVA中使用Axis发布/调用Webservice的方法详解
如果初识axis发布/调用WS,建议先读上面的参考文件,本文对于发布/调用WS的主要步骤只是简单文字描述,没有它写的详尽2013-05-05
最新评论