类似java里的import功能:根据模糊的路径找到所有符合条件的文件。 比如说:在src目录下所有以-context.xml结尾的文件。只要输入:src/*-context.xml就可以。这个功能在spring里已经实现。但请问可不可以用小的工具包,或者直接写一个类来实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 }} 说明一下这个的功能点:如果要查的文件路径是 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包也得好使。(这一点优先度最低,不能实现就算了。) 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中的路径格式) 谢谢大牛们给小伟的指点 小伟还有问题 J2SE的综合练习 zq无语啊 我用jdbc连接sql2000,然后将工程打包成jar,运行jar发现无法访问数据库 初学者编译遇到的简单问题(关系到访问权限和包的一些小问题) 这个程序问什么会异常,逻辑上有什么错误吗! 文件输入流 转换为 字符串 java可以调用vba吗? 想学JAVA帮高人指点 AWT的Window问题 怎么做java SE程序设计 随机数问题
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
}
}
如果要查的文件路径是 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包也得好使。(这一点优先度最低,不能实现就算了。)
如果在的话就可以逐个包进行扫描。也就是在
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中的路径格式)