如何使用 Java 获取 GitHub 项目文件夹下所有文件及其原始内容的列表?
How to get list of all files and their raw contents under the GitHub project folder using the Java?
我正在尝试读取 GitHub URL 的特定文件夹下的文件和每个文件的原始内容,但我没有得到正确的响应。
基本上,我想做这样的事情:
我有一个 public GitHub 项目,其中有一个文件夹 folder1
。此 folder1
包含许多文件 XML/JSON
。
我想使用指向 folder1
的 link: https://github.com/comapny/project/tree/master/folder1/tempFolder
并获取其内容。
这个文件夹下有很多文件,我想读取原始数据的内容。
截至目前,我可以请求文件夹下的单个文件及其原始数据,但无法读取文件夹下的文件以及读取所有文件及其内容。
以下是我目前的代码:
import org.apache.http.StatusLine;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class TestMain {
public static void main(String[] args) throws IOException {
//Read the GitHub files
final String inputURL = "https://github.com/company/project/tree/master/XML/withData";
//final String inputURL = "https://raw.githubusercontent.com/company/project/blob/master/XML/withData/myFileName.xml";
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(new HttpGet(inputURL));
StatusLine statusLine = response.getStatusLine();
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
System.out.println("Response Code : " + statusLine.getStatusCode() + " ---- " + "Response Phrase : " + statusLine.getReasonPhrase());
System.out.println("Response body: " + responseBody);
}
}
您可以使用 GitHub's repository content API 列出目录中的文件以及读取文件内容。
例如,列出名为“XML”的目录中的文件可能如下所示:
https://api.github.com/repos/company/project/contents/XML/
响应将是目录中的一组项目。每个项目都包含 属性 type
,它让您知道该项目是文件还是目录,以及 url
,一个 link 来请求该项目。
通过对项目的 URL 执行新请求,您可以通过其 content
属性 访问文件的内容,或者如果它是一个目录,您可以访问里面的另一个文件数组。
我正在尝试读取 GitHub URL 的特定文件夹下的文件和每个文件的原始内容,但我没有得到正确的响应。
基本上,我想做这样的事情:
我有一个 public GitHub 项目,其中有一个文件夹
folder1
。此folder1
包含许多文件XML/JSON
。我想使用指向
folder1
的 link:https://github.com/comapny/project/tree/master/folder1/tempFolder
并获取其内容。这个文件夹下有很多文件,我想读取原始数据的内容。
截至目前,我可以请求文件夹下的单个文件及其原始数据,但无法读取文件夹下的文件以及读取所有文件及其内容。
以下是我目前的代码:
import org.apache.http.StatusLine;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class TestMain {
public static void main(String[] args) throws IOException {
//Read the GitHub files
final String inputURL = "https://github.com/company/project/tree/master/XML/withData";
//final String inputURL = "https://raw.githubusercontent.com/company/project/blob/master/XML/withData/myFileName.xml";
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(new HttpGet(inputURL));
StatusLine statusLine = response.getStatusLine();
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
System.out.println("Response Code : " + statusLine.getStatusCode() + " ---- " + "Response Phrase : " + statusLine.getReasonPhrase());
System.out.println("Response body: " + responseBody);
}
}
您可以使用 GitHub's repository content API 列出目录中的文件以及读取文件内容。
例如,列出名为“XML”的目录中的文件可能如下所示:
https://api.github.com/repos/company/project/contents/XML/
响应将是目录中的一组项目。每个项目都包含 属性 type
,它让您知道该项目是文件还是目录,以及 url
,一个 link 来请求该项目。
通过对项目的 URL 执行新请求,您可以通过其 content
属性 访问文件的内容,或者如果它是一个目录,您可以访问里面的另一个文件数组。