对于我拥有的一个独特的测试场景,我需要能够用 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/