替换文件中的相关单词(一)之文件类型为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);
    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 03:28:01

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

OC高效率52:(二)类的头文件中尽量少引用其他头文件

// //  EOCPerson.h //  OC高效率52:类的头文件中尽量少引用其他头文件 // //  Created by Zoujie on 15/10/8. //  Copyright ? 2015年 Zoujie. All rights reserved. // #import <Foundation/Foundation.h> //#import "EOCEmployer.h" @class EOCEmployer;//向前申明该类,将引入头文件的时机尽量延

在类的头文件中尽量少引入其他头文件 &lt;&lt;Effective Objective-C&gt;&gt;

与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m.创建好一个类之后,其代码看上去如下所示: // EOCPerson.h #import <Foundation/Foundation.h>

awk命令之 - 统计/etc/passwd文件中各用户所使用的shell类型及出现次数

统计/etc/passwd文件中各用户所使用的shell类型及出现次数 awk -F: 'BEGIN{printf"%-15s\t%s\n","ShellType","Count"}{shellType[$NF]++}END{for(i in shellType)printf"%-15s\t%d\n",i,shellType[i]}' /etc/passwd

檢查php文件中是否含有bom的php文件

原文链接: http://www.cnblogs.com/Athrun/archive/2010/05/27/1745464.html 另一篇文章:<关于bom.php>,http://hi.baidu.com/aullik5/blog/item/f0e589127a28a2f0f7039e5e.html 另一篇文章:<[BOM]PHP程序的UTF8神秘编码问题之解>,http://www.mlecms.com/tech/56.html 类似WINDOWS自带的记事本等软件,在保存

将一个文件中的内容,在另一个文件中生成. for line in f1, \n f2.write(line)

将一个文件中的内容,在另一个文件中生成. 核心语句: for line in f1: f1中的所有一行 f2.write(line)                                  # 是直接写入f1中出来的每一行,用   .write() 原文地址:https://www.cnblogs.com/jack20181017/p/9863521.html

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

首先说一下详细的实现思路: 第一步:我们须要获取要改动文件的信息,我们能够通过文件的路径来获取文件的FileInputStream,即文件的输入流,然后调用InputStreamReader读取文件输入流信息,将读入的信息保存到BufferedReader(BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取.)然后通过readLine()函数将流的信息读取出来,这样就完毕了第一步.我们能获取到文件的信息了 第二步:能够读取文件的信息了,我们就能够

对文件中出现的单词排序次数

package FileRead; import javax.persistence.criteria.CriteriaBuilder; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.*; class name{     String name=new String();     int num=0; } public class FileRead {     publ

第2条:在类的头文件中尽量少引入其他头文件

@class (向前声明) #import 注意:如果在各自头文件中引入对方的头文件,则会导致“循环引用 ”. 虽然#import(而非#inculde指令)不会导致死循环,但却意味着两个类里有一个无法被正确编译.

在.cpp文件中定义变量,在.h文件中extern

在cocos2d-x 的D:\phoneclient\cocos2dxlib\cocos\base\CCValue.h 文件中,发现如下代码: 全局查找之后,在D:\phoneclient\cocos2dxlib\cocos\base\CCValue.cpp 文件中,找到变量的定义: extern int a;//这是声明aint a;//这是定义a正常情况下都是h声明cpp定义. 声明和定义是不同的,声明可以有多次,定义只能有一次.h文件可能被很多cpp文件包含,所以里面只能写声明不能写定义,