首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法从GitHub中读取文件,并在控制台中使用Java打印?

有没有办法从GitHub中读取文件,并在控制台中使用Java打印?
EN

Stack Overflow用户
提问于 2018-05-16 18:22:01
回答 3查看 4.6K关注 0票数 0

我想在Github中将一个文件存储为java中的字符串,并在稍后的代码中处理它。我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2018-05-28 13:08:58

我们可以在Java中执行curl命令,并使用基本身份验证来访问文件。

URL url;String username="username",password="password",file="";
        try {
            url = new URL("https://www.bitbucket.com/raw-file-url");
            URLConnection uc;
            uc = url.openConnection();

            uc.setRequestProperty("X-Requested-With", "Curl");
            ArrayList<String> list=new ArrayList<String>();
            String userpass = username + ":" + password;
            String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));//needs Base64 encoder, apache.commons.codec
            uc.setRequestProperty("Authorization", basicAuth);

            BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) 
                file=file+line+"\n";
            System.out.println(file);
            return file;

        } catch (IOException e) {
            System.out.println("Wrong username and password");
            return null;

        }
票数 2
EN

Stack Overflow用户

发布于 2020-12-17 12:07:00

这是一种简单的java方式。我使用标准的github和Base64类来连接github并打印一个java.net.URL,如下所示:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Base64;

public class GitConnect {
    public static void main(String... args) throws Exception {

        java.net.URL url = null;
        String username = "user";
        String password = "gitpwd";
        String file = "";
        try {
            url = new java.net.URL("https://raw.githubusercontent.com/lrjoshi/webpage/master/public/post/c159s.csv");
            java.net.URLConnection uc;
            uc = url.openConnection();

            uc.setRequestProperty("X-Requested-With", "Curl");
            java.util.ArrayList<String> list = new java.util.ArrayList<String>();
            String userpass = username + ":" + password;
            String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));//needs Base64 encoder, apache.commons.codec
            uc.setRequestProperty("Authorization", basicAuth);

            BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null)
                file = file + line + "\n";
            System.out.println(file);

        } catch (IOException e) {
            System.out.println("Wrong username and password");
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-09-29 23:51:52

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Map;


public static String getTextFromGithub(String link) {
    URL Url = null;
    try {
        Url = new URL(link);
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
    HttpURLConnection Http = null;
    try {
        Http = (HttpURLConnection) Url.openConnection();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    Map<String, List<String>> Header = Http.getHeaderFields();
    
    for (String header : Header.get(null)) {
        if (header.contains(" 302 ") || header.contains(" 301 ")) {
            link = Header.get("Location").get(0);
            try {
                Url = new URL(link);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            try {
                Http = (HttpURLConnection) Url.openConnection();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Header = Http.getHeaderFields();
        }
    }
    InputStream Stream = null;
    try {
        Stream = Http.getInputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }
    String Response = null;
    try {
        Response = GetStringFromStream(Stream);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return Response;
}

private static String GetStringFromStream(InputStream Stream) throws IOException {
    if (Stream != null) {
        Writer Writer = new StringWriter();

        char[] Buffer = new char[2048];
        try {
            Reader Reader = new BufferedReader(new InputStreamReader(Stream, "UTF-8"));
            int counter;
            while ((counter = Reader.read(Buffer)) != -1) {
                Writer.write(Buffer, 0, counter);
            }
        } finally {
            Stream.close();
        }
        return Writer.toString();
    } else {
        return "No Contents";
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50368308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档