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 閱讀(590) 評論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 赣州市| 灵武市| 敖汉旗| 垦利县| 息烽县| 咸宁市| 嘉兴市| 金堂县| 邻水| 黎平县| 师宗县| 岳阳市| 利辛县| 天镇县| 赤水市| 新丰县| 新昌县| 中宁县| 夏邑县| 格尔木市| 许昌县| 米易县| 荃湾区| 东辽县| 老河口市| 上高县| 长泰县| 田林县| 房产| 新余市| 天柱县| 镇坪县| 大荔县| 石河子市| 尼玛县| 汝城县| 八宿县| 沾化县| 陵川县| 湄潭县| 渑池县|