Java实现批量替换文本文档中内容
有更好的方案大佬们也可以在评论区指出

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class FileUtil {//存储要修改的内容private final Map<String, String> map;public FileUtil(Map<String, String> map) {this.map = map;}public static void main(String[] args) {//读取指定文件夹下的所有文件//给我你的目录文件夹路径String filepath = "F:\\A";File file = new File(filepath);Map<String, String> map = new HashMap<>();map.put("要修改的内容1", "修改的内容1");map.put("要修改的内容2;", "修改的内容2");new FileUtil(map).refreshFileList(file);}public void refreshFileList(String filepath) {refreshFileList(new File(filepath));}public void refreshFileList(File filepath) {if (!filepath.exists()) {System.out.println("此路径不存在");return;}File[] fileList = filepath.listFiles();if (fileList == null || fileList.length < 1) {System.out.println("空文件夹");return;}for (File file : fileList) {if (file.isDirectory()) {//如果是文件夹递归扫描refreshFileList(file);} else {String filename = file.getName();//读到的文件名String strFileName = file.getAbsolutePath();//文件路径//截取文件格式String SufName = filename.substring(filename.lastIndexOf(".") + 1);//排除不需要扫描的文件
//                if (SufName.equals("rar") || SufName.equals("jpg") || SufName.equals("png") || SufName.equals("jar") || SufName.equals("doc") || SufName.equals("xls") || SufName.equals("gif") || SufName.equals("wmz")) {//                    continue;
//                }//或者指定扫描文件if (SufName.equalsIgnoreCase("html") || SufName.equalsIgnoreCase("java")) {changeFile(file);}}}}/*** 修改文件** @param file*/private void changeFile(File file) {String s = null;try (FileInputStream fis = new FileInputStream(file);BufferedReader reader = new BufferedReader(new InputStreamReader(fis));) {//之所以用BufferedReader,而不是直接用BufferedInputStream读取,是因为BufferedInputStream是InputStream的间接子类,//InputStream的read方法读取的是一个byte,而一个中文占两个byte,所以可能会出现读到半个汉字的情况,就是乱码.//BufferedReader继承自Reader,该类的read方法读取的是char,所以无论如何不会出现读个半个汉字的.StringBuilder result = new StringBuilder();while (reader.ready()) {result.append((char) reader.read());}s = result.toString();Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String, String> mapKey : entries) {if (s.contains(mapKey.getKey())) { //判断当前行是否存在想要替换掉的字符 s = s.replace(mapKey.getKey(), mapKey.getValue());//替换为你想替换的内容}}} catch (IOException e) {e.printStackTrace();}writerFile(s, file);}/*** 写入文件** @param s* @param file*/public void writerFile(String s, File file) {try (FileOutputStream fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos)) {bos.write(s.getBytes());System.out.println("文件修改成功!");} catch (IOException e) {e.printStackTrace();System.out.println("文件修改失败!");}}}

Java实现批量替换文本文档中内容相关推荐

  1. MATLAB提取txt文本文档中特定关键字后的数字信息

    文本文档的信息多是按照行的格式读写的,因此在读取时对提取到每行的文本信息进行关键字的对比找到指定行,然后利用正则表达式提取相应的信息即可. 文本信息示例 positions bitstream siz ...

  2. Java提取文本文档中的所有网址(小案例介绍正则基础知识)

    正则表达式基础以及Java中使用正则查找 定义: 正则表达式是一些用来匹配和处理文本的字符串 正则的基础(先大致了解下) 1. 正则表达式的作用 查找特定的信息(搜索) 替换一些文本(替换) 2. 正 ...

  3. python找出文本的位置和替换_python查找文本文档中特定间隔位置的字符并替换

    实际工作中,从数据库里导出了几万条IMEI到excel中,现在需要把这些IMEI每40个分一组,保存在txt文档中,方便进行性能测试时调用. 1.excel中的IMEI以常规格式显示了,虽然内容是15 ...

  4. Python记录鼠标的点击与拖拽时间并在文本文档中保存记录

    网上看到很多 python 关于记录鼠标操作轨迹的方法,很少提到关于时间的记录. 因为在写一个关于游戏的脚本,为了尽可能地还原真人鼠标操作防止封号,鼠标的点击的时间间隔是其中尤为重要的一点.代码监听了 ...

  5. 动态生成多条插入语句 存入文本文档中

    写一个程序,能够动态生成多条插入语句如:insert into MyStudents values("人名1",年龄,'男',分数1,分数2).将生成的插入语句输出到记事本文件 S ...

  6. 删除txt等文本文档中指定行方法

    问题背景 有txt文件0000.txt,内容如下: 0 -1 DontCare -1 -1 -10.000000 219.310000 188.490000 245.500000 218.560000 ...

  7. jenkins job构建后汇总结果到同一个文本文档中去

    jenkins 构建后,执行下shell脚本,把结果汇总到同一个文件中,这样多个job构建后的结果可以在一个文件中展示 result_all_dir="/app/jenkins_result ...

  8. 一个用JAVA解析TXT格式文本文档的程序举例

    实体类 package txt; public class AliDataRecord {private String FSTR_SCATSID;private String FSTR_DESC;pr ...

  9. MATLAB中将数据写入TXT文本文档中

    matalb中打开文件: fid = fopen(文件名,'打开方式'): 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功.打开方式有如下选择:  'r':只读方式打开文件( ...

最新文章

  1. gradle 转 maven
  2. -----------简单排序-------------
  3. .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】
  4. SpringBoot 启动失败 Failed to determine a suitable driver class 问题解决方案
  5. 细数AVPlayer的那些坑
  6. JavaSE基础——Java多线程
  7. 你的公司建立了企业文化了么?没有就看看这个
  8. icem划分网格步骤_ICEM网格划分步骤
  9. 移动端UML图应用之UML图简述
  10. 制作window11系统U盘启动盘
  11. Domain Adaptation理论分析
  12. 软件测试人才培养全景图新版本
  13. 从Docker镜像创建Singularity镜像(SIF文件)
  14. python读文件-read_csv()-常用参数
  15. 26个音序的正确写法和占格_26个音序表怎么读(拼音音序表的正确写法)
  16. 华为hcie认证-链路聚合作用
  17. springBoot+itext处理富文本转pdf
  18. 单模光电转换器怎么接_光纤收发器怎么连接?光纤收发器安装图解大全!
  19. 单片机(3)跑马灯,按钮控制的跑马灯(2种编程)
  20. win10系统如何连接宽带连接服务器,win10怎么连宽带_win10系统如何连接宽带

热门文章

  1. 计算出1到1000以内所有不能被7整除的整数之和
  2. Linux NetworkManager网络服务详解
  3. CentOS7挂载CentOS7 everything安装光盘和设置yum源为挂载的光盘
  4. 2012年11月5日 记录
  5. 信息安全服务资质认证CCRC证书‖中国网络安全审查技术与认证中心
  6. html页面变成黑白,修改CSS样式实现网页变灰色/黑白代码的几个方法整理
  7. 清屏函数 mysql_c++清屏函数是什么
  8. sql server08 (mssqlserver)启动不了或者无法登陆三大解决办法
  9. linux设备驱动论坛,linux设备驱动开发环境搭建 (amoBBS 阿莫电子论坛)
  10. Vscode的相对路径读取问题及处理