A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.StringTokenizer;

  7. public class reguolv {
  8.         public static void main(String[] args) {
  9.                 try {
  10.                         String rpString = new reguolv().readRPString("f:/novel.txt");//读取要过滤的文章
  11.                         String torpString = new reguolv().readRPString("f:/filter.txt");// 读取关键字

  12.                         FileWriter fileWriter = new FileWriter("f:/success.txt");// 存储过滤后文章
  13.                         BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

  14.                         StringTokenizer newtoString = new StringTokenizer(torpString, ",");
  15.                         while (newtoString.countTokens() > 0) {
  16.                                 torpString = newtoString.nextToken();
  17.                                 int geshu = new reguolv().geshu(torpString);// 关键字汉字个数

  18.                                 String xinghao = "*";
  19.                                 for (int i = 1; i < geshu; i++) {
  20.                                         xinghao = xinghao + "*";
  21.                                 }

  22.                                 rpString = rpString.replace(torpString, xinghao);
  23.                         }
  24.                        
  25.                         bufferedWriter.write(rpString); // 写入文件
  26.                         bufferedWriter.flush(); // 刷新该流的缓冲
  27.                         bufferedWriter.close();
  28.                         fileWriter.close();
  29.                        
  30.                         System.out.println("过滤结束");
  31.                 } catch (IOException e) {
  32.                         e.printStackTrace();
  33.                 }
  34.         }

  35.         public String readRPString(String fileName) {
  36.                 String rpString = "";
  37.                 String a = "";
  38.                 try {
  39.                         FileReader fileReader = new FileReader(fileName);// 读取流
  40.                         BufferedReader bufferedReader = new BufferedReader(fileReader);
  41.                         while (bufferedReader.ready()) {
  42.                                 a = bufferedReader.readLine();// 按行读取
  43.                                 rpString += a;
  44.                         }
  45.                 } catch (IOException e) {
  46.                         // TODO Auto-generated catch block
  47.                         e.printStackTrace();
  48.                 }
  49.                 return rpString;
  50.         }
  51.        
  52.         public int geshu(String guanjianzi){
  53.                 int geshu = 0;
  54.                         char[] c = guanjianzi.toCharArray();
  55.                         for (int i = 0; i < c.length; i++) {
  56.                                 String len = Integer.toBinaryString(c[i]);
  57.                                 if (len.length() > 8) {
  58.                                         geshu++;
  59.                                 }
  60.                 }
  61.                 return geshu;
  62.         }
  63. }
复制代码
基本有注释了

5 个回复

倒序浏览
顶了~~{:soso_e113:}
回复 使用道具 举报
本帖最后由 黑马黄涛 于 2012-12-13 23:40 编辑
  1. package com.itcast.test;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.io.OutputStream;
  11. import java.io.OutputStreamWriter;
  12. import java.util.ArrayList;
  13. import java.util.Enumeration;
  14. import java.util.List;
  15. import java.util.Properties;

  16. public class Test {

  17.         public static void main(String[] args) {
  18.                 // 提示是否在D盘下含有success.txt文件,防止覆盖重要文件
  19.                 String outFilePath = "D:/success.txt";

  20.                 File outFile = new File(outFilePath);

  21.                 if (outFile.exists()) {
  22.                         System.out.println("请查看D盘下是否有以success.txt命名的重要文件,请移走,防止覆盖掉您的重要数据");
  23.                         return;
  24.                 }

  25.                 // 从文件中获取key值
  26.                 List<String> keys = getKeys();

  27.                 // 以下是读写的内容
  28.                 BufferedReader br = null;
  29.                 BufferedWriter bw = null;
  30.                 try {

  31.                         InputStream in = Test.class.getClassLoader().getResourceAsStream(
  32.                                         "novel.txt");

  33.                         br = new BufferedReader(new InputStreamReader(in));

  34.                         String str = "";
  35.                         while ((str = br.readLine()) != null) {

  36.                                 for (String string : keys) {

  37.                                         // 过滤关键字的操作
  38.                                         if (str.contains(string)) {

  39.                                                 String res = "";

  40.                                                 for (int i = 0; i < string.length(); i++) {
  41.                                                         res += "*";

  42.                                                 }

  43.                                                 str = str.replaceAll(string, res);

  44.                                                 res = "";
  45.                                         }

  46.                                 }

  47.                                 // 写入的操作
  48.                                 bw = new BufferedWriter(new OutputStreamWriter(
  49.                                                 new FileOutputStream(outFile, true)));

  50.                                 bw.append(str, 0, str.length());
  51.                                 bw.newLine();
  52.                                 bw.flush();

  53.                         }

  54.                 } catch (Exception e) {
  55.                         e.printStackTrace();
  56.                         throw new RuntimeException(e);
  57.                 } finally {

  58.                         // 关闭流资源,并且明确告诉jvm bw 和br已经是垃圾

  59.                         if (bw != null) {
  60.                                 try {
  61.                                         bw.close();
  62.                                 } catch (IOException e) {
  63.                                         e.printStackTrace();
  64.                                         throw new RuntimeException(e);
  65.                                 }

  66.                                 bw = null;
  67.                         }

  68.                         if (br != null) {
  69.                                 try {
  70.                                         br.close();
  71.                                 } catch (IOException e) {
  72.                                         e.printStackTrace();
  73.                                         throw new RuntimeException(e);
  74.                                 }

  75.                                 br = null;
  76.                         }

  77.                 }

  78.                 System.out.println("温馨提示:请查看D盘");

  79.         }

  80.         // 从文件中获取key值
  81.         private static List<String> getKeys() {
  82.                 InputStream in = Test.class.getClassLoader().getResourceAsStream(
  83.                                 "filter.txt");

  84.                 List<String> keys = new ArrayList<String>();

  85.                 BufferedReader br = null;

  86.                 try {

  87.                         String str = "";
  88.                         br = new BufferedReader(new InputStreamReader(in));

  89.                         while ((str = br.readLine()) != null) {
  90.                                 System.out.println(str);

  91.                                 String[] keystrings = str.split(" ");

  92.                                 for (String string : keystrings) {
  93.                                         keys.add(string);
  94.                                 }

  95.                         }

  96.                 } catch (IOException e) {
  97.                         e.printStackTrace();
  98.                         throw new RuntimeException(e);
  99.                 } finally {

  100.                         // 关闭流资源
  101.                         if (br != null) {
  102.                                 try {
  103.                                         br.close();
  104.                                 } catch (IOException e) {
  105.                                         // TODO Auto-generated catch block
  106.                                         e.printStackTrace();
  107.                                 }
  108.                                 br = null;
  109.                         }

  110.                 }

  111.                 return keys;
  112.         }
  113. }
复制代码
呵呵....

1.gif (2.58 KB, 下载次数: 32)

1.gif
回复 使用道具 举报
这是???
回复 使用道具 举报
顶了,哈哈
回复 使用道具 举报
  没  伪代码   看好久。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马