从源码包中抽取java文件(保持包路径)
package com.yangxiutian;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;public class PackageUtil{ public static void copyFile(String tarPath, File srcPath) throws IOException { File tarPathFile = new File(tarPath);//目标虚拟路径 File tarFile;//目标文件 if (!tarPathFile.exists()) { tarPathFile.mkdirs(); tarFile = new File(tarPath + srcPath.getName()); tarFile.createNewFile(); InputStream is = new FileInputStream(srcPath); OutputStream os = new FileOutputStream(tarFile); byte[] buff = new byte[1024]; int reads = 0; while ((reads = is.read(buff)) != -1) { os.write(buff, 0, reads); } os.close(); is.close(); } } /** * 遍历java文件 */ public static void listAllFile(File root, List<File> allFiles) { File[] files = root.listFiles(); for (File temp : files) { if (temp.isDirectory()) {//是目录,递归调用 listAllFile(temp, allFiles); } else { if (temp.getName().endsWith(".java")) { allFiles.add(temp); } } } } public static void main(String[] args) throws IOException { String basePath = "C:\\Documents and Settings\\Administrator\\桌面\\package\\"; String path;//路径,不包含基路径 String srcPath = "C:\\Documents and Settings\\Administrator\\My Documents\\Downloads\\axiom-1.2.11-source-release\\axiom-1.2.11\\"; File root = new File(srcPath);// List<File> list = new ArrayList<File>(); listAllFile(root, list); for (File temp : list) { BufferedReader br = new BufferedReader(new FileReader(temp)); while (true) {//取出package信息 String line = br.readLine(); if (line.contains("package ")) { path = line.replace("package ", "").replace(".", "/")//路径org/apache/axiom/testutils/io/ 前面不带后面带 .replace(";", "/"); copyFile(basePath + path, temp);//复制文件 System.out.println(basePath + path); break; } } } System.out.println(list.size() + "个java文件"); }}?