march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          之前寫過FileHelper類,其中的readFile和writeFile方法分別用于文件的讀和寫。這次在原來的基礎上添加了如下方法:
          • listFiles
            • 用于遞歸地查找一個目錄下的所有文件并輸出。
          • hasWords
            • 用于判斷一個文件中是否含有某一關鍵詞。
          • findFilesContainsWords
            • 遞歸地查找某一目錄下所有包含某一關鍵字的所有文件(這里我加了一個過濾器,即我只找了所有后綴為“.h”的文件)。
          加了新功能后的FileHelper類代碼如下:
          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.File;
          import java.io.FileReader;
          import java.io.FileWriter;



          public class FileHelper {
              public static String readFile(String filename) throws Exception {
                  BufferedReader reader = new BufferedReader(new FileReader(filename));  
                  String ans = "", line = null;
                  while((line = reader.readLine()) != null){
                      ans += line + "\r\n";
                  }
                  reader.close();
                  return ans;
              }
              public static void writeFile(String content, String filename) throws Exception {
                  BufferedWriter writer  = new BufferedWriter(new FileWriter(filename));
                  writer.write(content);
                  writer.flush();
                  writer.close();
              }
              
              public static void listFiles(String path) {
                  File file = new File(path);
                  File[] files = file.listFiles();
                  if(files == null
                      return;
                  for(File f : files) {
                      if(f.isFile()) {
                          System.out.println(f.toString());
                      } else if(f.isDirectory()) {
                          System.out.println(f.toString());
                          listFiles(f.toString());
                      }
                  }
              }
              public static boolean hasWords(String file, String words) {
                  try {
                      String s = readFile(file);
                      int w_len = words.length();
                      int len = s.length();
                      for(int i=0;i+w_len<=len;i++) {
                          if(s.substring(i, i+w_len).equals(words))
                              return true;
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  return false;
              }
              public static void findFilesContainsWords(String path, String words) throws Exception {
                  File file = new File(path);
                  File[] files = file.listFiles();
                  if(files == nullreturn;
                  for(File f : files) {
                      if(f.isFile()) {
                          String s = f.toString();
                          int s_len = s.length();
                          if(s.substring(s_len-2, s_len).equals(".h") == falsecontinue// add filter
                          if(hasWords(f.toString(), words))
                              System.out.println(f.toString());
                      } else if(f.isDirectory()) {
                          findFilesContainsWords(f.toString(), words);
                      }
                  }
              }
              
              public static void main(String[] args) throws Exception {
                  //String ans = readFile("D:\\input.txt");
                  
          //System.out.println(ans);
                  
          //writeFile(ans, "D:\\output.txt");
                  
          //findFilesContainsWords("D:\\clamav-0.98.6", "scanmanager");//在IDE中找
                  if(args.length != 1) {
                      System.out.println("Usage : \"D:\\clamav-0.98.6\" words");
                      return;
                  }
                  findFilesContainsWords("D:\\clamav-0.98.6", args[0]);//在命令行中找
              }
          }
          posted on 2015-03-10 16:11 marchalex 閱讀(595) 評論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 民权县| 赫章县| 当涂县| 博客| 濮阳市| 阳城县| 怀集县| 元阳县| 武乡县| 乌拉特后旗| 元谋县| 彰化市| 二手房| 石景山区| 外汇| 右玉县| 贡嘎县| 营山县| 衡阳市| 芜湖市| 新昌县| 敦化市| 龙门县| 盘锦市| 鄂托克旗| 夏河县| 罗江县| 定州市| 德阳市| 鄂尔多斯市| 海兴县| 三门峡市| 苗栗县| 四子王旗| 奉节县| 南开区| 巨鹿县| 辽阳市| 清徐县| 斗六市| 延川县|