-
2022-04-07 13:06:12
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实现查找文本内容替换功能示例
2020-09-04 14:39:48本替换几乎是所有文本编辑器都支持的功能,但是要限制在编辑其中才可以执行该功能。本实例实现了制定文本文件的内容替换,并且不需要再编辑其中打开文本文件 -
java查找并替换文本文件内容
2021-02-12 15:51:37【实例简介】【实例截图】【核心代码】...import java.awt.EventQueue;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io...【实例简介】
【实例截图】
【核心代码】
package com.mingrisoft;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ReplaceTool extends JFrame {
/**
*
*/
private static final long serialVersionUID = -6579898848014795564L;
private JPanel contentPane;
private JTextField beforeTextField;
private JTextField afterTextField;
private File textFile;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ReplaceTool frame = new ReplaceTool();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ReplaceTool() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 400, 150);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new GridLayout(2, 1, 5, 5));
JPanel contentPanel = new JPanel();
contentPane.add(contentPanel);
JLabel beforeLabel = new JLabel("替换前字符串:");
contentPanel.add(beforeLabel);
beforeTextField = new JTextField();
contentPanel.add(beforeTextField);
beforeTextField.setColumns(10);
JButton chooseButton = new JButton("选择文件");
chooseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_chooseButton_actionPerformed(e);
}
});
contentPanel.add(chooseButton);
JPanel buttonPanel = new JPanel();
contentPane.add(buttonPanel);
JButton replaceButton = new JButton("开始替换");
replaceButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_replaceButton_actionPerformed(e);
}
});
JLabel afterlabel = new JLabel("替换后字符串:");
buttonPanel.add(afterlabel);
afterTextField = new JTextField();
buttonPanel.add(afterTextField);
afterTextField.setColumns(10);
buttonPanel.add(replaceButton);
}
protected void do_chooseButton_actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt"));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
int result = chooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
textFile = chooser.getSelectedFile();
}
}
protected void do_replaceButton_actionPerformed(ActionEvent e) {
String before = beforeTextField.getText();// 获得替换前字符串
if (before.isEmpty()) {// 验证字符串是否为空
JOptionPane.showMessageDialog(this, "请输入替换前字符串", "警告信息", JOptionPane.WARNING_MESSAGE);
return;
}
String after = afterTextField.getText();// 获得替换后字符串
if (after.isEmpty()) {// 验证字符串是否为空
JOptionPane.showMessageDialog(this, "请输入替换后字符串", "警告信息", JOptionPane.WARNING_MESSAGE);
return;
}
FileReader reader = null;// 创建文件读流
FileWriter writer = null;// 创建文件写流
StringBuilder sb = new StringBuilder();// 使用StringBuilder对象保存文件内容
int flag = 0;// 声明文件读入标示
char[] temp = new char[1024];// 使用字符数组读入文件
try {
reader = new FileReader(textFile);// 使用选择的文件创建读流
while ((flag = reader.read(temp)) != -1) {
sb.append(temp);// 读入文件中的内容
}
String content = sb.toString().replace(before, after);// 替换字符串
writer = new FileWriter(textFile);// 创建文件写流
writer.write(content); // 将替换后的字符串写入到文件
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();// 关闭文件读流
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (writer != null) {
try {
writer.close();// 关闭文件写流
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
JOptionPane.showMessageDialog(this, "字符串替换成功!");
return;
}
}
-
Java实现批量替换文本文档中内容
2022-02-06 23:17:03Java实现批量替换文本文档中内容 有更好的方案大佬们也可以在评论区指出 import java.io.*; import java.util.HashMap; import java.util.Map; import java.util.Set; public class FileUtil { //存储要修改的内容...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实现替换文本内容(二)
2018-08-29 18:37:24上一篇写的是将内容写入新文件,读完后删除源文件,在修改新...读取完源文件后,将随机文件流定位回记录的位置,最后将临时文件内容写入,删除临时文件。即达到替换文本内容的效果。 oldString 目标字符串 new...上一篇写的是将内容写入新文件,读完后删除源文件,在修改新文件名。
本次用的方法是创建随机文件流,用来读取源文件内容,找到第一次包含目标字符串内容的位置,然后将目标字符串替换写入临时文件,后面不包含目标字符串的内容也写入,含目标字符串则替换写入。读取完源文件后,将随机文件流定位回记录的位置,最后将临时文件内容写入,删除临时文件。即达到替换文本内容的效果。
oldString 目标字符串
newString替换字符串
newFile临时文件以下为代码实现过程:
public class AlterStringInFile { private static String path ="src/源文件"; //目标文件路径 private static File file = new File(path); //创建目标文件 public static void alterStringInNewFileReturnFile(String oldString, String newString){ try { long start = System.currentTimeMillis(); //创建临时文件 File newFile = new File("src/临时文件"); if(!newFile.exists()){ newFile.createNewFile(); } //创建随机文件流 RandomAccessFile raf = new RandomAccessFile(file, "rw"); //创建对临时文件缓存输出流 BufferedWriter bw_NewFile = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(newFile,true))); String string ; //存储读取内容 long lastPoint = raf.getFilePointer(); //记录每次读取位置 long point = 0; //记录第一次包含目标字符串位置 int sum = 0; //记录包含目标字符串次数 boolean flag = false; //判断是否是目标字符之后内容 while ((string = raf.readLine()) != null){ //随机文件流读取的时候会将GBK格式转为ISO-8859-1, //将读取的内容转回本地格式 string = new String(string.getBytes("ISO-8859-1")); //判断是否包含目标字符 if(string.contains(oldString)){ if(sum == 0) point = lastPoint; string = new String( string.replace(oldString, newString)); bw_NewFile.write(string); bw_NewFile.newLine(); sum++; flag = true; } else if (flag){ bw_NewFile.write(string); bw_NewFile.newLine(); } else { lastPoint = raf.getFilePointer(); } } bw_NewFile.close(); BufferedReader br_NewFile = new BufferedReader( new InputStreamReader( new FileInputStream(newFile))); raf.seek(point); while((string = br_NewFile.readLine()) != null){ string = string +"\r\n"; raf.write(string.getBytes()); } br_NewFile.close(); raf.close(); newFile.delete(); long time = System.currentTimeMillis() - start; System.out.println(sum+"个"+oldString +"替换成"+newString+"耗费时间:"+time); } catch (Exception e) { System.out.println(e.getMessage()); } } public static void main(String[] args){ String oldString = "oldString"; String newString = "newString"; alterStringInNewFileReturnFile(oldString,newString); } }
源文件内容为本次代码内容,以下为运行结果:
-
Java替换文本文件中的特定字符串
2021-03-18 11:59:33我有一个名为log.txt的文本文件,它具有以下数据1,,Mon May 05 00:05:45 WST 2014,textFiles/a.txt,images/download.jpg2,,Mon May 05 00:05:45 WST 2014,textFiles/a.txt,images/download.jpg第一个逗号之前的数字... -
Java实现文件内容replace
2018-04-16 10:05:57对指定目录下的一篇文本文档实现关键字的替换,或者对图片等其他文件进行替换 -
Java实现文本内容替换(三)
2018-08-30 20:12:24本次实现方法为,将文本内容全读到缓存中去,读取的过程中如果包含目标字符串则替换后写入缓存,读取完后将缓存内容写入文本。 以下为代码实现过程: public class AlterStringInFile { private static String ... -
Java 在 Word 文档中使用新文本替换指定文本的方法
2020-08-25 16:47:42主要介绍了Java 在 Word 文档中使用新文本替换指定文本的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 -
Java 替换文件中的内容信息
2020-07-27 09:36:36首先读取文件内容,找到要替换的文本,然后替换文本信息,将旧文件删除,创建新文件,将所有内容复制一份重写到新文件中 具体代码: import java.io.File; import java.io.IOException; import java.nio.file.... -
使用Java替换文件中的文本
2021-02-28 10:22:22我有一个名为FormatString.java的文本文件。它包含一些单词。在所有这些单词中,我想将单词oldstring替换为newstring,并将最终结果重命名为t.txt。我已经编写了代码。从技术上讲,它应该起作用。问题是我不知道在... -
java替换文件中某一行文本的内容
2021-02-12 17:24:40个人博客 地址:http://www.wenhaofan.com/article/20180913160442代码如下package ...import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputSt... -
Java 实现替换文件的指定内容
2019-08-05 09:51:43//import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.... * @title 文件替换 * @date 2019年6月21日 上午9:4... -
Java IO流替换目录下的所有文本文件的某一行内容
2022-03-26 21:45:56 本人经常写CSDN文章,上面的图片链接来自gitee图床,突然有一天图床用不了了,我需要切换到腾讯云COS上,那此时我目录下这么多的文本文件需要更换图片链接,我要是挨个文件去替换,我这几十个文件换下来我得崩溃... -
使用命令替换文本多行内容_从命令行替换纯文本文件中的文本
2020-09-19 04:12:22使用命令替换文本多行内容A very useful function which is missing from the Windows library of command line tools is the ability to replace text in plain text files. A function like this can be used for ... -
JAVA读取文件并替换文件中的内容
2021-08-11 17:10:14import java.io.*; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class qwe { public ... -
java 文本字符串替换工具
2018-07-17 19:08:02使用java代码实现搜索遍历文本文件并替换文本内容, 支持脚本bat和sh调用. -
Java替换文本文件txt指定行间的数据并保存
2019-02-22 10:05:09读取excel或者其他类型文件的数据作为待替换的数据 //读取excel数据 File file2 = new File(filePath + "Excel标准参数.xls"); Workbook workbook = null; try { workbook = new ... -
java 替换html标签里面内容
2021-06-11 05:49:00java 处理html标签内容,找到html标签中所有相当的内容,并替找成新的内容.1.[代码]替换html标签内容public static void main(String[] args) {String bullein="6、报名及招标文件发售时间:${projectRule.signUpSTime... -
文件内容替换与文件编码格式转换java源码
2015-03-19 18:40:10eclipse默认编码为gbk开发一段时间需要修改成utf-8,写个脚本批量处理文件编码格式,也可以批量替换文本内容; -
Java 查找并替换PDF中的指定文本
2020-12-29 14:18:08本文介绍通过Java程序批量替换PDF中的指定文本内容。 1. 程序环境准备如下: 程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具;另外JDK版本建议使用高版本更佳。 jar文件导入后,可调用Spire.... -
Java File文件流读取文件夹内的文件并替换文件内容
2022-02-24 17:06:33Java File文件流读取文件夹内的文件并替换文件内容一、前言二、代码三、运行结果 一、前言 批量读取文件夹内的文件,并替换各个文件的内容 二、代码 新建一个普通 Java 项目就可以,创建文件 ReadFile.java import ... -
强大的文件内容搜索替换工具.zip
2020-03-13 13:41:50适合各文本脚本网页 JAVA等逆向修改搜索关键词 强大的文件内容搜索替换工具 在你修改程序的时候 非常需要这类工具哦 适合每个程序员使用 -
Java 文本内容差异对比实现介绍
2021-12-02 17:09:03目录一、文本差异对比介绍二、依赖下载三、获取两文件的不同点-patch四、根据patch生成统一的差异格式unifiedDiff五、根据unifiedDiff打补丁六、对比两文件的不同点并按行显示不同 一、文本差异对比介绍 举一个最... -
java2Word操作Word,比如插入图片和替换文本
2017-09-20 13:56:24java2Word操作Word,比如插入图片和替换文本,压缩文件中有【lib和exe】文件夹和[java2Word]项目代码,网上都不完整,本人对其进行完全整合,新手解压后按readme.txt文件操作说明可以使用 -
Java实现文本内容替换(四)
2018-09-06 18:53:47在文件找到原字符串开始位置,然后seek定位,开始讲替换后字符串写入即可实现替换文本特定内容. public class AlterStringInFile { private static String path ="src/源文件"; //目标文件路径 private... -
java 查找替换pdf中的指定文本
2021-03-08 20:29:41本文介绍通过Java程序批量替换PDF中的指定文本内容。程序环境准备如下:程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具;另外JDK版本建议使用高版本更佳。jar文件导入后,可调用Spire.PDF提供的... -
java读取文本文件txt时候的换行问题
2021-02-12 20:32:37文本文件如下,我写的程序也在下面,用java读取一行以后进行字符操作(细节可以忽略),但是我下面写的程序只能够读一行,我不知道该怎么去让java判断读哪一行(本来我爸temp写成二维...文本文件如下,我写的程序也在... -
Java实现对文件内容替换字符串(一)
2018-08-28 19:47:54本次写的实现方法是将创建一个BufferedReader缓存读取流读取文件内容,每读取一行判断是不是含有替换的原字符串oldString,如果含有则将原字符串替换成要替换的字符串newString,然后将改行内容写入创建的新文件中... -
文件内容批量替换工具
2019-01-28 14:34:09一款非常好用的超级批量文本替换工具,软件支持htm、html、asp、java等类型的文件,可以帮助用户快速替换掉文件夹中的内容,非常方便实用。