黑马程序员技术交流社区
标题:
今天刚看到过滤题,晚了一小时,也贴出来吧
[打印本页]
作者:
刘健
时间:
2012-12-13 23:12
标题:
今天刚看到过滤题,晚了一小时,也贴出来吧
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
public class reguolv {
public static void main(String[] args) {
try {
String rpString = new reguolv().readRPString("f:/novel.txt");//读取要过滤的文章
String torpString = new reguolv().readRPString("f:/filter.txt");// 读取关键字
FileWriter fileWriter = new FileWriter("f:/success.txt");// 存储过滤后文章
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
StringTokenizer newtoString = new StringTokenizer(torpString, ",");
while (newtoString.countTokens() > 0) {
torpString = newtoString.nextToken();
int geshu = new reguolv().geshu(torpString);// 关键字汉字个数
String xinghao = "*";
for (int i = 1; i < geshu; i++) {
xinghao = xinghao + "*";
}
rpString = rpString.replace(torpString, xinghao);
}
bufferedWriter.write(rpString); // 写入文件
bufferedWriter.flush(); // 刷新该流的缓冲
bufferedWriter.close();
fileWriter.close();
System.out.println("过滤结束");
} catch (IOException e) {
e.printStackTrace();
}
}
public String readRPString(String fileName) {
String rpString = "";
String a = "";
try {
FileReader fileReader = new FileReader(fileName);// 读取流
BufferedReader bufferedReader = new BufferedReader(fileReader);
while (bufferedReader.ready()) {
a = bufferedReader.readLine();// 按行读取
rpString += a;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rpString;
}
public int geshu(String guanjianzi){
int geshu = 0;
char[] c = guanjianzi.toCharArray();
for (int i = 0; i < c.length; i++) {
String len = Integer.toBinaryString(c[i]);
if (len.length() > 8) {
geshu++;
}
}
return geshu;
}
}
复制代码
基本有注释了
作者:
黑马黄涛
时间:
2012-12-13 23:34
顶了~~{:soso_e113:}
作者:
黑马黄涛
时间:
2012-12-13 23:38
本帖最后由 黑马黄涛 于 2012-12-13 23:40 编辑
package com.itcast.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
public class Test {
public static void main(String[] args) {
// 提示是否在D盘下含有success.txt文件,防止覆盖重要文件
String outFilePath = "D:/success.txt";
File outFile = new File(outFilePath);
if (outFile.exists()) {
System.out.println("请查看D盘下是否有以success.txt命名的重要文件,请移走,防止覆盖掉您的重要数据");
return;
}
// 从文件中获取key值
List<String> keys = getKeys();
// 以下是读写的内容
BufferedReader br = null;
BufferedWriter bw = null;
try {
InputStream in = Test.class.getClassLoader().getResourceAsStream(
"novel.txt");
br = new BufferedReader(new InputStreamReader(in));
String str = "";
while ((str = br.readLine()) != null) {
for (String string : keys) {
// 过滤关键字的操作
if (str.contains(string)) {
String res = "";
for (int i = 0; i < string.length(); i++) {
res += "*";
}
str = str.replaceAll(string, res);
res = "";
}
}
// 写入的操作
bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile, true)));
bw.append(str, 0, str.length());
bw.newLine();
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
// 关闭流资源,并且明确告诉jvm bw 和br已经是垃圾
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
bw = null;
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
br = null;
}
}
System.out.println("温馨提示:请查看D盘");
}
// 从文件中获取key值
private static List<String> getKeys() {
InputStream in = Test.class.getClassLoader().getResourceAsStream(
"filter.txt");
List<String> keys = new ArrayList<String>();
BufferedReader br = null;
try {
String str = "";
br = new BufferedReader(new InputStreamReader(in));
while ((str = br.readLine()) != null) {
System.out.println(str);
String[] keystrings = str.split(" ");
for (String string : keystrings) {
keys.add(string);
}
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
// 关闭流资源
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
br = null;
}
}
return keys;
}
}
复制代码
呵呵....
1.gif
(2.58 KB, 下载次数: 41)
下载附件
2012-12-13 23:39 上传
作者:
453100956
时间:
2013-11-15 19:20
这是???
作者:
qfch
时间:
2014-5-31 06:33
顶了,哈哈
作者:
yipixiaoma
时间:
2015-8-31 21:07
没 伪代码 看好久。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2