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小程序
          主站蜘蛛池模板: 葵青区| 宁津县| 房产| 长宁县| 古蔺县| 连江县| 兴安盟| 都兰县| 西林县| 横山县| 讷河市| 松江区| 沙雅县| 洛宁县| 贵港市| 黄平县| 千阳县| 武胜县| 平阳县| 吉木乃县| 桐乡市| 托里县| 财经| 绥宁县| 青岛市| 石景山区| 正安县| 新密市| 天祝| 河南省| 喜德县| 汾阳市| 临朐县| 松潘县| 巢湖市| 蕲春县| 凉山| 天津市| 清苑县| 涟水县| 绥棱县|