public static void main(String[] args) throws Exception {
URL resource = JarReader.class.getResource("");//根据class所在目录
String path = resource.getPath();
//File curr = new File("");//根据jar包所在目录
//String path = curr.getAbsolutePath() + "/";
System.out.println("根据目录:" + path);
File file = new File(path);
String[] fileArr = file.list();
ArrayList<String> fileList = new ArrayList<>();
for (String fileName : fileArr) {
if (fileName.endsWith(".jar") && !fileName.contains("JarReader")) {
fileList.add(path + fileName);
}
}
System.out.println("获取到:" + fileList.size() + "个jar包");
for (String filePath : fileList) {
JarFile jarFile = new JarFile(filePath);
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry jarEntry = entries.nextElement();
parseJar(jarEntry, filePath, path);
}
}
}
public static void parseJar(JarEntry jarEntry, String filePath, String dirPath) throws Exception {
String name = jarEntry.getName();
if (!name.startsWith("conf") && !name.startsWith("META-INF") && name.endsWith(".xml") && name.contains("dao")) {
File xmlFile = new File(dirPath + "/xml");
if (!xmlFile.exists()) {
xmlFile.mkdir();
}
URL url = new URL("jar:file:" + filePath + "!/" + name);
xmlFile = new File(dirPath + "/xml/" + name.substring(0, name.lastIndexOf("/")));
if (!xmlFile.exists()) {
xmlFile.mkdirs();
}
xmlFile = new File(dirPath + "/xml/" + name);
if (xmlFile.exists()) {
System.out.println("该文件-> " + filePath.substring(filePath.lastIndexOf("/") + 1) + ">" + name + " 已存在");
return;
}
System.out.println("获取到xml-> " + name);
FileOutputStream fileOutputStream = new FileOutputStream(xmlFile);
InputStream inputStream = url.openStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
int length;
byte[] bytes = new byte[10240];
while ((length = inputStream.read(bytes)) != -1) {
bufferedOutputStream.write(bytes, 0, length);
}
bufferedOutputStream.flush();
inputStream.close();
bufferedOutputStream.close();
}
}