需求:所有xml文件都放在某个目录下,写个方法读取所有xml文件,然后传给下面的某个方法调用
实现:先把所有的xml文件通过递归读取出来 ,存放到List中,然后以文件名为Key,文件(文件路径+文件名)为Value,存放到Map中,供后面程序调用
代码如下:
import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListXmlFiles { /** * 获取所有XML文件 * @param path 文件路径 * @param fileList 存放所有XML文件的列表 */ public void getXmlFiles(String path, List<File> fileList) { File file = new File(path); File[] files = file.listFiles(); for (File fileIndex : files) { if (!fileIndex.exists()) { throw new NullPointerException("Cannot find " + fileIndex); } else if (fileIndex.isFile()) { fileList.add(fileIndex); } else { if (fileIndex.isDirectory()) { getXmlFiles(fileIndex.getAbsolutePath(), fileList); } } } } public static void main(String[] args) { //声明一个HashMap,用于存放XML文件,格式:<文件名,文件>,以文件名为KEY,可以得到整个文件所在的路径和文件名 Map<String, String> xmlMap = new HashMap<>(); ListXmlFiles lxf = new ListXmlFiles(); //存放xml文件的根目录 String filePath = System.getProperty("user.dir") + "\element"; //声明一个List,用于存放所有得到的XML文件 List<File> fileList = new ArrayList<>(); lxf.getXmlFiles(filePath, fileList); for (File f : fileList) { System.out.println(f); //把每个文件存放到HashMap中 xmlMap.put(f.getName(),f.getAbsolutePath()); } System.out.println(xmlMap); } }
执行结果:
D:UIAutoTestUIdemoelementaa1.xml D:UIAutoTestUIdemoelementaa2.xml D:UIAutoTestUIdemoelement1.xml D:UIAutoTestUIdemoelementb2.xml D:UIAutoTestUIdemoelementbbb3.xml D:UIAutoTestUIdemoelementbbbbbb4.xml D:UIAutoTestUIdemoelementbbbbbb5.xml D:UIAutoTestUIdemoelementbbbbbbbbbbLoginPage.xml D:UIAutoTestUIdemoelementc.xml
{b5.xml=D:UIAutoTestUIdemoelementbbbbbb5.xml,
b4.xml=D:UIAutoTestUIdemoelementbbbbbb4.xml,
c.xml=D:UIAutoTestUIdemoelementc.xml,
a1.xml=D:UIAutoTestUIdemoelementaa1.xml,
a2.xml=D:UIAutoTestUIdemoelementaa2.xml,
b3.xml=D:UIAutoTestUIdemoelementbbb3.xml,
LoginPage.xml=D:UIAutoTestUIdemoelementbbbbbbbbbbLoginPage.xml,
b2.xml=D:UIAutoTestUIdemoelementb2.xml,
b1.xml=D:UIAutoTestUIdemoelement1.xml} Process finished with exit code 0