• 在指定路径或者是文件名查找指定的字符串


    采用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://blog.csdn.net/jiangjunshow

  • 相关阅读:
    js基础四
    序列化和反序列化
    数组
    枚举
    Class对象和反射
    字符串String
    对象的克隆
    异常处理机制
    多继承和代码块
    接口和抽象类
  • 原文地址:https://www.cnblogs.com/skiwdhwhssh/p/10341289.html
Copyright © 2020-2023  润新知