首先说一下具体的实现思路:
第一步:我们需要获取要修改文件的信息,我们可以通过文件的路径来获取文件的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);
}
}