/*
需求:当前有一张关键词表和一个新闻文本
要把在文本中所包含的词表中的关键词标识出来,(在这里我用的是前后加标识符#和**)
然后输出到另一个文本
*/
import java.io.*;
public class adverbSignd {
static File txtFile;// 将所有路径定义为全局变量
static File advFile;
static File targetFile;
static String beginSign = "#";
static String endSign = "**";
adverbSignd(File txtFile, File adverbFile, File targetFile)
throws Exception {
this.txtFile = txtFile;
this.advFile = adverbFile;
this.targetFile = targetFile;
get();
}
public void get() throws Exception {
FileInputStream fisTxt = new FileInputStream(txtFile);
BufferedReader bufAdv = new BufferedReader(new FileReader(advFile));
BufferedWriter bwTar = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(targetFile), "utf-8"));
// 将原文件读取至数组和txtStr中
int txtLenth = fisTxt.available();
byte[] txt = new byte[txtLenth];
fisTxt.read(txt);
String txtStr = new String(txt);
// 将原字符串每个字符和词汇表每个词比较
for (int i = 0; i < txtStr.length() - 1;) {
String departStr = null;
String line = null;
boolean bool = false;//判断关键字表中是否有此关键字或词
while ((line = bufAdv.readLine()) != null) {
departStr = txtStr.substring(i, i + line.length());//读取与关键字等长的子串
if (departStr.equals(line)) {
bwTar.append(beginSign + line + endSign);
bool = true;
i = i + line.length();// 若找到此关键词,那么源字符串的角标向后移动此关键字的长度个位置
}
}
if (bool == false) {// 如果在整个词表都没有匹配到,那么将这一个字符输出,角标向后移一位。
bwTar.append(txtStr.subSequence(i, i + 1));
i = i + 1;
}
bwTar.flush();
//System.out.println(departStr);
}
fisTxt.close();
bufAdv.close();
bwTar.close();
}
public static void main(String[] args) throws Exception {
txtFile = new File("C:\\Users\\Administrator\\Desktop\\新闻.txt");
advFile = new File("C:\\Users\\Administrator\\Desktop\\词表.txt");
targetFile = new File("C:\\Users\\Administrator\\Desktop\\结果.txt");
new adverbSignd(txtFile, advFile, targetFile);
}
}
//结果原文本原样输出到目标文本,
大致看了下你的实现思路,
1.实现
// 将原字符串每个字符和词汇表每个词比较
这个功能的时候,是不是可以选择使用 正则表达式呢,我看你用的是循环实现。
2.你问的这个问题,通过简单的打断点调试便可以指导错误出现在哪里啊
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。