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小程序
          主站蜘蛛池模板: 商城县| 沙田区| 锡林郭勒盟| 衡阳市| 通化县| 广东省| 无棣县| 获嘉县| 大英县| 洞口县| 阿鲁科尔沁旗| 灵宝市| 库伦旗| 平利县| 罗田县| 大同市| 六安市| 天气| 巢湖市| 高台县| 珠海市| 晋宁县| 肥乡县| 肥东县| 芦溪县| 双辽市| 蚌埠市| 闽清县| 彭山县| 宜州市| 牟定县| 贵州省| 阿克陶县| 丹东市| 大厂| 甘洛县| 佛冈县| 梨树县| 肃北| 远安县| 北安市|