首先说一下详细的实现思路:

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

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

  1. 在类的头文件里尽量少引入其它头文件 <<Effective Objective-C>>

    与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用 ...

  2. 使用Java中的IO流,把A文件里的内容输入到B文件中

    我们先创建两个文本文件,out.txt和in.txt,在out.txt中输入"Hello World",然后使用FileInputStream把字符串读取出来,再使用FileOut ...

  3. 读写文件:每次读入大文件里的一行、读写.CSV文件

    读文件: 传统的读法.所有读出,按行处理: fp=open("./ps.txt", "r"); alllines=fp.readlines(); fp.clos ...

  4. .vue文件里引用单独样式和js文件

    style只能引一个,script可以引多个

  5. apk去广告工具(利用apktool去除apk文件里的广告)

    基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawab ...

  6. 关于新版vue-cli安装json-server在build文件里没生成出dev-server文件

    今天在安装json-server时遇到一个问题,build文件里并没有生成dev-server.js文件, 开始是怀疑配置有问题,或者安装不正确,然后重新安装了两三次,还是这样,郁闷.. 通过查询资料 ...

  7. Github使用.gitignore文件忽略不必要上传的文件 (转)

    原文地址: https://blog.csdn.net/gjy211/article/details/51607347 常用编程语言及各种框架平台下的通用   .gitignore   文件 http ...

  8. Linux文件格式化与相关处理及sed工具

    http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...

  9. linux查找文件夹下的全部文件里是否含有某个字符串

    查找文件夹下的全部文件里是否含有某个字符串  find .|xargs grep -ri "IBM"  查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称  fin ...

随机推荐

  1. mysql索引的操作

    一.创建和查看普通索引 这是最基本的索引类型,而且它没有唯一性之类的限制 1.创建表时创建普通索引 CREATE TABLE table_name( 属性名 数据类型, ... 属性名 数据类型, I ...

  2. [转]linux之top命令

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 简介 top命令是Linux下常用的性能分析工具,能够实时显示系 ...

  3. SQL之T-sql 语句操作数据库

    用SQL语句操作数据库 在上一次的话题中我们谈到了怎么使用数据库,说到了数据库的基本用法. 不过只是仅限于一些简单的操作,so 如果你不想被人说--"你们只是动动鼠标操作就可以了! 没什么技 ...

  4. C#入门经典 Chapter4 流程控制

    4.1布尔逻辑 布尔比较运算符 ==  !=   <   >    <=    >= 处理布尔值的布尔值运算符 ! & | ^(异或) 条件布尔运算符 &&am ...

  5. git使用原理

    如果需要新建仓库: mkdir new_artcle//artcle为文件名 cd new_artcle//进入该目录 git init //初始化工作空间 git add 文件名(article) ...

  6. python web 开发学习路线

    转载,备着 自己目前学习python web 开发, 经过两个月的摸索,目前对web开发有了浅显的认识,把自己的学习过程贴出来.1.python入门推荐老齐<从零开始学python>,&l ...

  7. js >> 右移操作符

    十进制 十六进制 二进制 右移>> 十进制值 F 1F FF

  8. Linux如何查看端口(转)

    Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...

  9. 表单enctype属性传值问题

    form表单的enctype设置为multipart/form-data后,表单中除了文件后台能拿到,其他值后台都拿不到. 知识点: 一.application/x-www-form-urlencod ...

  10. 后台取前台input标签值方法

    直接在实体类中增加一个get set方法就可以实现取到value值