替换文件里的相关单词(一)之文件类型为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);
} }
替换文件里的相关单词(一)之文件类型为txt的更多相关文章
- 在类的头文件里尽量少引入其它头文件 <<Effective Objective-C>>
与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用 ...
- 使用Java中的IO流,把A文件里的内容输入到B文件中
我们先创建两个文本文件,out.txt和in.txt,在out.txt中输入"Hello World",然后使用FileInputStream把字符串读取出来,再使用FileOut ...
- 读写文件:每次读入大文件里的一行、读写.CSV文件
读文件: 传统的读法.所有读出,按行处理: fp=open("./ps.txt", "r"); alllines=fp.readlines(); fp.clos ...
- .vue文件里引用单独样式和js文件
style只能引一个,script可以引多个
- apk去广告工具(利用apktool去除apk文件里的广告)
基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawab ...
- 关于新版vue-cli安装json-server在build文件里没生成出dev-server文件
今天在安装json-server时遇到一个问题,build文件里并没有生成dev-server.js文件, 开始是怀疑配置有问题,或者安装不正确,然后重新安装了两三次,还是这样,郁闷.. 通过查询资料 ...
- Github使用.gitignore文件忽略不必要上传的文件 (转)
原文地址: https://blog.csdn.net/gjy211/article/details/51607347 常用编程语言及各种框架平台下的通用 .gitignore 文件 http ...
- Linux文件格式化与相关处理及sed工具
http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...
- linux查找文件夹下的全部文件里是否含有某个字符串
查找文件夹下的全部文件里是否含有某个字符串 find .|xargs grep -ri "IBM" 查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称 fin ...
随机推荐
- Jquery 可拖拽的Ztree
比较懒,就只贴关键代码吧,自己把有用的属性全部打印出来了,也加了不少注释. 保存后涉及到的排序问题,刷新问题还未考虑到,后面有的话再加. $.fn.zTree.init($("#ztree& ...
- Windows下apache+tomcat负载均衡
Windows下apache+tomcat负载均衡 网上已经有很多的资料,但是很多都比较零碎,需要整合一起才能搭建出理想的负载均衡,正好前段时间搭建了windows与linux下的负载均衡,在此记录, ...
- Python--10、进程知识补充
守护进程 基于进程启动的子进程,会和主进程一起结束.主进程结束的依据是程序的代码执行完毕. #创建守护进程p=Process(task) p.daemon = True p.start() 子进程需要 ...
- Python3之Zip
from collections import defaultdict from collections import OrderedDict d = defaultdict(list) d['a'] ...
- html5——多媒体(三)
自定义进度条 1.video标签是内联块,可以设置宽高,但是需要用大盒子将其包裹起来进行定位 2.小盒子设计成进度条样式,并进行定位 3.进度条样式中的特殊按钮可以用web字体 4.通过点击实现视频的 ...
- hdu,1028,整数拆分的理解
#include"iostream"using namespace std;int main() { int n,i,j,k; int c[122],temp[122]; //c[ ...
- UICollectionView(一)基本概念
整体预览 高等级的包含和管理(Top-level containment and management) UICollectionView UICollectionViewController UIC ...
- java主要集合类的数据结构
1).ArrayList ArrayList维护着一个对象数组.如果调用new ArrayList()后,它会默认初始一个size=10的数组. 每次add操作都要检查数组容量,如果不够,重新 ...
- Windows 8 常见教程
http://www.codeproject.com/Articles/439874/Web-service-on-Windows-Phone http://www.c-sharpcorner.com ...
- for mxl path
废话不多说,直接上例子 简单明了 create table tb_class ( classId int , className ) ) go ,'一班') ,'二班') ,'三班') go crea ...