替换文件中的相关单词(一)之文件类型为txt

首先说一下具体的实现思路:

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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值