比如说:在src目录下所有以-context.xml结尾的文件。只要输入:src/*-context.xml就可以。这个功能在spring里已经实现。但请问可不可以用小的工具包,或者直接写一个类来实现呢?

解决方案 »

  1.   


    package com;import java.io.File;
    import java.io.IOException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.List;public class Test
    { public static void main(String[] args)
    {
    //这里你也可以用自己实现classLoader
    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    List  resultFileList = new ArrayList();

    try
    {
    Enumeration urlEnum = classLoader.getResources(""); if (null != urlEnum)
    {
    //你的文件后缀
    final String filePattern = "context.xml";
    while (urlEnum.hasMoreElements())
    {
    File file = new File(((URL) urlEnum.nextElement())
    .getFile());
    //类路径下的文件
    if (file.isDirectory())
    {
    File[] fileList = file.listFiles();
    if (null != fileList)
    {
    for (int i = 0; i < fileList.length; i++)
    {
    if(fileList[i].isFile())
    {
    //这里还可以改成正则表达式匹配
    if (fileList[i].getName().endsWith(
    filePattern))
    {
    resultFileList.add(fileList[i]);
    }
    }
    }
    }
    }
    }
    }
    } catch (IOException e)
    {
    e.printStackTrace();
    }

    //处理你的文件 resultFileList
    }
    }
      

  2.   

    说明一下这个的功能点:
    如果要查的文件路径是 jp/co/ana/fmc/fis/common/master/*-context.xml假如A工程中有文件 pack/pack/pack/app-context.xmlB工程中有文件 pack/pack/pack/application-context.xmlB工程引用A工程现在运行B工程,可以得到上述两个工程中的文件1.路径不完全也要好使: 例如:jp/** /*-context.xml 也得能找到所有满足条件的文件。2.打成jar包也得好使。(这一点优先度最低,不能实现就算了。) 
      

  3.   

    1、首先A工程现在是在B工程的classPath下。
    如果在的话就可以逐个包进行扫描。也就是在
    if (file.isDirectory())
    {
                            File[] fileList = file.listFiles();
                            if (null != fileList)
                            {
                                for (int i = 0; i < fileList.length; i++)
                                {
                                    if(fileList[i].isFile())
                                    {
                                        //这里还可以改成正则表达式匹配
                                        if (fileList[i].getName().endsWith(
                                                filePattern))
                                        {
                                            resultFileList.add(fileList[i]);
                                        }
                                    }else 
    {
       //这个为文件夹即包。可以递归调用
    }
                                }
                            }
                        }
    }
    这段代码中进行包的遍历。逐个添加到resultFileList中。
    2、在A工程某个固定的位置如src下的sum.xml中记录所有xml文件的路径。在利用上面的代码装载即可。
    for example: com/xxx/xxx.xml(在sum.xml中的路径格式)