java - 用Java读取GitHub项目的目录结构

标签 java github

对于我拥有的一个独特的测试场景,我需要能够用 Java 读取给定 Github 项目(公共(public)项目)的目录结构。换句话说,给定一个 GitHub 项目 url,我的程序应该能够读取 /src/main/java 下的 Java 文件。

选项 1:直接从如下 url 读取 html 并解析某些标记是一种选择,但它太脆弱和痛苦。

https://github.com/testuser/testproject/tree/master/src/main/java

选项 2:将项目下载为 zip 文件并使用 Java ZipInputStream对其进行处理。

https://github.com/testuser/testproject/archive/master.zip

除了这 2 个选项之外,是否还有我缺少的更简单的解决方案?

最佳答案

由于我无法让 Java GitHub 库正常工作,我决定解析源 zip 文件以获得我想要的内容。

    String githubZip = "https://github.com/testuser/testproject/archive/master.zip"

    ZipInputStream zipInputStream = null
    def javaFiles = [:]
    try {
        zipInputStream = new ZipInputStream(new URL(githubZip).openStream());
        ZipEntry zipEntry;

        while( (zipEntry = zipInputStream.getNextEntry())!=null ) {
            if(!zipEntry.isDirectory() && zipEntry.getName().endsWith("java")){
                StringWriter stringWriter = new StringWriter()
                IOUtils.copy(zipInputStream, stringWriter)
                def fileContent = stringWriter.toString();

                javaFiles[zipEntry.getName()] = fileContent
                stringWriter.close()
            }
        }
    } catch (Exception e){
        e.printStackTrace()
    } finally {
        zipInputStream.close()
    }

关于java - 用Java读取GitHub项目的目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692974/

相关文章:

java - 如何同步操作?

Git:从以前的提交中删除存储库中的文件

github - 新的 laravel/homestead 配置中 GitHub OAuth token 出现 Composer 错误

windows - 如何解决Github for Windows 中的 "Wall of Pink"?

macos - OSX 上的 Git 安装 : Cannot exec 'git-credential-osxkeychain' : Bad CPU type in executable

git - 从 github.com 中删除贡献者?

java - Spring:如何从 RestTemplate 获取 root Url

java - 我不明白为什么当我运行此代码时它永远不会进入 onScannedRobot(ScannedRobot e) 方法?

Java 动态说明

java - 如何在 J2EE Web 应用程序中创建类似 "http://username.example.com"的域?