gpt4 book ai didi

java - 无需下载即可读取远程 csv 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:36 24 4
gpt4 key购买 nike

我需要逐行读取远程大 csv 文件(基本上是流式传输)。每次阅读后,我都想在数据库中保留记录。目前我正在通过下面的代码实现它,但我不确定它是否下载完整的文件并将其保存在 jvm 内存中。我认为不是。我可以使用一些 Java 8 流功能以更好的方式编写此代码吗

URL url = new URL(baseurl);
HttpURLConnection urlConnection = url.openConnection();
if(connection.getResponseCode() == 200)
{
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String current;
while((current = in.readLine()) != null)
{
persist(current);
}
}

最佳答案

首先你应该使用 try-with-resources statement阅读完成后自动关闭流。
下一页BufferedReader有一个方法 BufferedReader::lines 返回 Stream<String> .
那么你的代码应该是这样的:

URL url = new URL(baseurl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if (connection.getResponseCode() == 200) {
try (InputStreamReader streamReader = new InputStreamReader(connection.getInputStream());
BufferedReader br = new BufferedReader(streamReader);
Stream<String> lines = br.lines()) {
lines.forEach(s -> persist(s)); //should be a method reference
}
}

现在由您来决定代码是否更好,您的假设是否正确,即您没有将整个文件保存在 JVM 中。

关于java - 无需下载即可读取远程 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com