首先说一下具体的实现思路:
第一步:我们需要获取要修改文件的信息,我们可以通过文件的路径来获取文件的FileInputStream,即文件的输入流,然后调用InputStreamReader读取文件输入流信息,将读入的信息保存到BufferedReader(BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。)然后通过readLine()函数将流的信息读取出来,这样就完成了第一步,我们能获取到文件的信息了
第二步:能够读取文件的信息了,我们就可以通过Matcher这类来匹配我们要替换的单词,然后用appendReplacement()来替换单词,并且保存替换后的字符串信息,
最后:将替换后的文件信息重新打印到新的文件中去,接下来请看代码实现:
package com; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author FishRoad * @date 2015年8月17日 下午3:04:08 * */ public class Test01 { /** * 功能:Java读取txt文件的内容 * 步骤:1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */ public static void readTxtFile(String filePath){ try { String encoding="GBK"; File file=new File(filePath); String outStr ; if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; StringBuffer sb = new StringBuffer(""); while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); sb.append(lineTxt+"\r\n"); } sb.append("What I Want to say is that you are just a good person!"); outStr = sb.toString(); //调用文件的单词替换方法 String changerStr = tpReplaceWord(outStr); read.close(); FileOutputStream out = new FileOutputStream("F:/我的文件复制.txt"); OutputStreamWriter write = new OutputStreamWriter(out); write.write(changerStr); write.flush(); write.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } } public static String tpReplaceWord(String str) { /*StringBuffer strBuf = new StringBuffer(); strBuf.append("Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。\r" + "由James Gosling和同事们共同研发,并在1995年正式推出。\r" + "Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。\r" + "1995年更名为Java,并重新设计用于开发Internet应用程序。\r" + "用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:\r" + "跨平台、动态Web、Internet计算。\r" + "从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。\r" + "另一方面,Java技术也不断更新。Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。\r" + "在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。\r" + "2010年Oracle公司收购Sun Microsystems。\r"); String a = strBuf.toString();*/ // 生成Pattern对象并且编译一个简单的正则表达式"Java" Pattern p = Pattern.compile("Java"); // 用Pattern类的matcher()方法生成一个Matcher对象 Matcher m = p.matcher(str); StringBuffer sb = new StringBuffer(); int i = 0; // 使用find()方法查找第一个匹配的对象 boolean result = m.find(); // 使用循环将句子里所有的Java找出并替换再将内容加到sb里 while (result) { i++; m.appendReplacement(sb, " 呵呵 "); // System.out.println("第" + i + "次匹配后sb的内容是:" + sb); // 继续查找下一个匹配对象 result = m.find(); } // 最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里; m.appendTail(sb); System.out.println("调用m.appendTail(sb)后sb的最终内容是:\r" + sb.toString()); return sb.toString(); } public static void main(String argv[]){ //该文件的信息就是上面的strBuf中的关于java的信息 String filePath = "F:\\aaaaa.txt"; // "res/"; readTxtFile(filePath); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-07 03:28:01