`
yangxiutian
  • 浏览: 61396 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

从源码包中抽取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文件");
    }
}
 
0
0
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密  WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件...

    java源码包2

    Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密  WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标...

    java源码包3

    Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密  WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标...

    java源码包4

    Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密  WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标...

    kettle动态设置输入文件路径

    【标题】"Kettle动态设置输入文件路径"指的是在Pentaho Data Integration(简称Kettle,也称为Spoon)工具中,如何根据特定条件或变量动态地设定数据处理过程中的输入文件路径。Kettle是一个开源的数据集成平台,...

    字体抽取源码

    3. **引入依赖**:将生成的jar文件作为项目依赖,或者将其添加到类路径中。 4. **编写代码**:通过sfntly提供的API,编写你的字体处理逻辑。 例如,以下是一个简单的示例,展示如何使用sfntly读取字体信息: ```...

    Java随机点名源码

    Java随机点名源码是一种基于Java编程语言的小型应用程序,用于在给定的姓名列表中随机选择学生进行点名。这个程序特别适用于教师或者需要在人群中随机选取对象的场合,如会议、活动等。该程序的最新版本是在2019年...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    ffmpeg源码与已编译库文件

    在这个“ffmpeg源码与已编译库文件”压缩包中,包含了FFmpeg的源代码以及预编译好的SO(共享对象)文件,这主要用于Android开发中的JNI(Java Native Interface)集成。 FFmpeg源码: FFmpeg源码是用C和C++编写的,...

Global site tag (gtag.js) - Google Analytics