博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在指定路径或者是文件名查找指定的字符串
阅读量:6374 次
发布时间:2019-06-23

本文共 3990 字,大约阅读时间需要 13 分钟。

采用WINDOWS的内容查找,居然只支持文本文件,不支持如JSP等文件。那就自己写一个吧,感觉还可以,将所以包含查找字符串的全路径都打印出来,这样就能够了。源程序如 下:

 

import
 java.io.BufferedReader;
import
 java.io.File;
import
 java.io.FileReader;
public
 
class
 SearchInJspFile 
...
{
    
/** *//**
     * 在指定的文件名中查找对应的字符串,存在就将该文件名绝对路径打印出来
     * 
@param fileName 文件名的绝对路径,String型
     * 
@param srcStr 要查找的字符串,String型
     
*/
    
public void searchFile(String fileName,String srcStr)
    
...{
        File file
=new File(fileName);
        
try ...{
            FileReader fr
=new FileReader(file);
            BufferedReader br
=new BufferedReader(fr);
            String strLine
="";
            
while((strLine=br.readLine())!=null)
            
...{
                
if(strLine.indexOf(srcStr)>0)
                
...{
                    System.out.println(fileName);
                    
break;
                }
            }
            br.close();
            fr.close();
        }
 catch (Exception e) ...{
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
/** *//**
     * 在指定的绝对路径中查找指定的字符串
     * 
@param path 绝对路径
     * 
@param srcStr 要查找的字符串
     
*/
    
public void searchPath(String path,String srcStr)
    
...{
        File file
=new File(path);
        
if(file.isDirectory())
        
...{
            File[] fileList
=file.listFiles();
            
for(int i=0;i<fileList.length;i++)
            
...{
                
if(fileList[i].isDirectory())//是目录就调用递归
                ...{
                    searchPath(fileList[i].getAbsolutePath(),srcStr);
                }
                
else
                
...{
                    searchFile(fileList[i].getAbsolutePath(),srcStr);
                }
            }
        }
        
else
        
...{
            searchFile(path,srcStr);
        }
            
    }
    
public static void main(String[] args) ...{
        
// TODO Auto-generated method stub
        String path="H:/xinkuaijizhunze/src/BIMIS";
        String srcStr
="<iframe name="pubinfo"";
        SearchInJspFile s
=new SearchInJspFile();
        s.searchPath(path, srcStr);
        System.out.println(
"执行完毕!");
    }
}

 

这个改进了一下,可以在一个文件中查找多个字符串,只有当多个字符串都存在于同一个文件中时,查找条件成立,打印查找到的文件名及路径。

 

import
 java.io.BufferedReader;
import
 java.io.File;
import
 java.io.FileReader;
import
 java.util.ArrayList;
public
 
class
 SearchStrInPath 
...
{
    ArrayList listCondition 
= new ArrayList();// 存放条件的列表
    
int conditionNum;// 查找的条件个数
    String fileTypeExtendsName 
= "";// 在指定的扩展名文件中查找,例如:.xml,不指定就在全部的文件中查找,包括二进制文件
    
/** *//**
     * 取得总条件的个数
     * 
     * 
@return
     
*/
    
private int getConditionNum() ...{
        
return listCondition.size();
    }
    
/** *//**
     * 增加需要查找的字符串,所有增加的字符串在查找的文件中都找到返加该文件名
     * 
@param str
     
*/
    
private void addCondition(String str) ...{
        listCondition.add(str);
    }
    
/** *//**
     * 在给定的文件中查找
     * 
@param fileName 文件名
     
*/
    
public void searchFile(String fileName) ...{
        File file 
= new File(fileName);
        
boolean isTrue = false;
        
try ...{            
            String strLine 
= "";
            
for (int i = 0; i < conditionNum; i++...{
                FileReader fr 
= new FileReader(file);
                BufferedReader br 
= null;
                br 
= new BufferedReader(fr);
                String condition 
= listCondition.get(i).toString();
                isTrue 
= false;
                
while ((strLine = br.readLine()) != null...{
                    
if (strLine.indexOf(condition) > 0...{
                        isTrue 
= true;
                        
break;
                    }
                }
                br.close();
                fr.close();
                
if (!isTrue) ...{
                    i 
= conditionNum;// 结束
                }
            }
            
if (isTrue) ...{
                System.out.println(fileName);
            }
        }
 catch (Exception e) ...{
            
// TODO Auto-generated catch block
            
// e.printStackTrace();
        }
    }
    
/** *//**
     * 在指定的绝对路径中查找指定的字符串
     * 
     * 
@param path
     *            绝对路径
     * 
@param srcStr
     *            要查找的字符串
     
*/
    
public void searchPath(String path) ...{
        conditionNum 
= getConditionNum();
        File file 
= new File(path);
        
if (file.isDirectory()) ...{
            File[] fileList 
= file.listFiles();
            
for (int i = 0; i < fileList.length; i++...{
                
if (fileList[i].isDirectory())// 是目录就调用递归
                ...{
                    searchPath(fileList[i].getAbsolutePath());
                }
 else ...{
                    
// 下面为设置只读取指定后缀的文件,在这些指定的文件中去查找
                    if (fileTypeExtendsName == ""
                            
|| fileList[i].getAbsolutePath().endsWith(fileTypeExtendsName))
                        searchFile(fileList[i].getAbsolutePath());
                }
            }
        }
 else ...{
            
// 下面为设置只读取指定后缀的文件,在这些指定的文件中去查找
            if (fileTypeExtendsName == ""
                    
|| file.getAbsolutePath().endsWith(fileTypeExtendsName))
                searchFile(file.getAbsolutePath());
                
        }
    }
    
// 一个示例
    public static void main(String[] args) ...{
        
// TODO Auto-generated method stub
        SearchStrInPath s = new SearchStrInPath();
        String path 
= "D:/work/BIMIS/bfms/web/WEB-INF/config/operation/bfms";
        s.addCondition(
"IvtBaseInfoFind");
        
//s.addCondition("xml");//可增加多个字符串同时查找
        
//s.addCondition("gb2312");
        s.searchPath(path);
        System.out.println(
"执行完毕!");
    }
}

本文出自:

 

 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!

转载于:https://www.cnblogs.com/skiwdhwhssh/p/10341289.html

你可能感兴趣的文章
为何某些文章的阅读量这么高?
查看>>
当AD服务器置于防火墙内时,所需开放的端口
查看>>
限免的Mac App套件,工程师绝对不可错过
查看>>
Exchange 2013 添加地址列表到脱机通讯簿
查看>>
Skype for Business Server 2015-05-监控和存档服务器-配置
查看>>
浅谈物化视图
查看>>
安装SQL Server 2017
查看>>
超融合超越企业传统存储绕不开的六个问题
查看>>
医院CIO的一幅工作对联
查看>>
iOS客户端的APNS服务简介与实现
查看>>
DPM灾难切换应用场景
查看>>
简单配置Oracle10g DataGuard物理备库
查看>>
网曝支付宝漏洞:手机丢了,支付宝也就完了
查看>>
4 在vCenter Server安装View Composer组件
查看>>
SFB 项目经验-24-为持久聊天室-查询或者增加成员
查看>>
Linux下配置Squid基础教程
查看>>
当Cacti遭遇大流量
查看>>
Outlook Anywhere 客户端配置详解
查看>>
来,测一下你的学习能力!
查看>>
《Windows Server 2008 R2系统管理实战》前言与内容提要
查看>>