从指定的路径中查找含有特殊字符串的文件

import java.io.*;
import java.util.*;
import
java.util.concurrent.*;
public class SearchFile
{
  
 public static void main(String ... strings)
  
 {
        final int FILE_Queue_SIZE
= 10;
        final int SEARCH_THREADS =
100;

        Scanner in = new
Scanner(System.in);
      
 System.out.println("enter your base directory:");
  
     String directory = in.nextLine();
  
     System.out.println("enter your
keyword");
        String keyword =
in.nextLine();

      
 ExecutorService pool=
Executors.newCachedThreadPool();
      
 MatchCounter counter = new MatchCounter(new
File(directory),keyword,pool);
      
 Future<Integer> result = pool.submit(counter);
  
     try
      
 {
          
 System.out.println("result.get()=" + result.get() + "matching
files.");
        }
  
     catch (Exception e)
  
     {
      
     e.printStackTrace();
  
     }
      
 pool.shutdown();
        int
largestPoolSize =
((ThreadPoolExecutor)pool).getLargestPoolSize();
  
     System.out.println("largestPoolSize=" +
largestPoolSize);
    }
}
class MatchCounter
implements Callable<Integer>
{
    private File
directory;
    private    String
keyword;
    private ExecutorService
pool;
    private int count;
  
 public MatchCounter(File directory, String keyword, ExecutorService
pool)
    {
      
 this.directory = directory;
      
 this.keyword = keyword;
      
 this.pool = pool;
    }
  
 public Integer call()
    {
  
     count = 0;
      
 try
        {
  
         File[] files =
directory.listFiles();
      
     ArrayList<Future<Integer>> results =
new ArrayList<Future<Integer>>();
  
         for(File
file:files)
          
 {
          
     if(file.isDirectory())
  
           
 {
          
         MatchCounter counter = new
MatchCounter(file,keyword,pool);;
      
           
 Future<Integer> result = pool.submit(counter);
  
           
     results.add(result);
  
           
 }else
          
     {
      
             if
(search(file))
          
         {
  
           
         count++;
  
           
         System.out.println("路径:" +
file.getAbsolutePath());
      
           
 }
          
     }
      
     }
      
     for(Future<Integer>
result:results)
          
 {
          
     try
      
         {
  
           
     count += result.get();
  
           
     System.out.println("count=" + count + "-----" +
"result.get()=" + result.get());
      
         }
  
             catch
(Exception e)
          
     {
      
           
 e.printStackTrace();
      
         }
  
         }
  
         
  
     }catch (Exception e)
  
     {
      
     e.printStackTrace();
  
     }
        return
count;
    }
    public boolean
search(File file)
    {
  
     try
      
 {
          
 Scanner in = new Scanner(new FileInputStream(file));
  
         boolean found =
false;
          
 while(!found && in.hasNextLine())
  
         {
  
             String line
= in.nextLine();
          
     if(line.contains(keyword)) found =
true;
          
 }
          
 in.close();
          
 return found;
      
 }
        catch (Exception
e)
        {
  
         return false;
  
     }
    }
}

从指定的路径中查找含有特殊字符串的文件,码迷,mamicode.com

时间: 2024-11-07 03:58:21

从指定的路径中查找含有特殊字符串的文件的相关文章

Linux查找含有特定字符串的文件

Linux查找含有特定字符串的文件命令为grep.以下为详细的使用方法 grep [OPTIONS] PATTERN [FILE...] #实例:递归查找当前文件夹下所有含有test的文件,并显示行号 grep -rn "test" * -r 递归查找 -n 显示行号 -i 忽略大小写 -w 只匹配整个单词,而不是字符串的字部分(如pattern为"test", 不匹配"test1"或"atest") -C num 显示匹配到

查找目录下的所有文件中是否含有某个字符串 linux

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式    (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成.   (2)基本元字符集及其含义       ^ :只匹配行首.   如^a 匹配以a开头的行abc,

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数

linux查找目录下的所有文件中是否含有某个字符串 &lt;zhuan&gt;

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成. (2)基本元字符集及其含义 ^ :只匹配行首. 如^a 匹配以a开头的行abc,a2e,a12,aaa,.

在某个目录下的所有文件中查找包含某个字符串的Windows命令

findstr可以完成这个工作. findstr /s /i "string" *.*   上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string"这个字符串. *.*表示所有类型的文件. /s 表示当前目录以及所有子目录 /i 表示不区分大小写 可以参考help findstr的输出解释来使用此命令. 注意: findstr.exe一般在C:\Windows\System32目录下,要从任意路径调用该命令,需要将C:\Windows\Sy

檢查php文件中是否含有bom的php文件

原文链接: http://www.cnblogs.com/Athrun/archive/2010/05/27/1745464.html 另一篇文章:<关于bom.php>,http://hi.baidu.com/aullik5/blog/item/f0e589127a28a2f0f7039e5e.html 另一篇文章:<[BOM]PHP程序的UTF8神秘编码问题之解>,http://www.mlecms.com/tech/56.html 类似WINDOWS自带的记事本等软件,在保存

查找目录下的所有文件中是否含有某个字符串

find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa

在LoadRunner中查找和替换字符串

参考<Search & Replace function for LoadRunner>: http://ptfrontline.wordpress.com/2009/03/13/search-replace-function-for-lr/ LoadRunner中没有直接的函数支持查找并替换字符串,因此可以封装一个lr_replace函数出来: // -------------------------------------------------------------------

OC-在一个字符串中查找另一个字符串的范围;从一个字符串中提取子串

/* 从字符串@"Welcome to Bejing!",中查找 Beijing的范围. */ #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString * str1 = @"Welcom to Beijing"; NSString * str2 = @"Beijing"; NSRang