gpt4 book ai didi

java - ByteArrayOutputStream 到字符串数组

转载 作者:行者123 更新时间:2023-12-02 05:47:24 27 4
gpt4 key购买 nike

我正在编写一个应用程序,它有一个方法可以从我的服务器下载文本文件。该文本文件将包含约 1,000 个代理 IP。下载每 10 分钟进行一次。我需要找到最有效的方法来做到这一点。

目前,我在名为 Connection 的类中有一个方法,它将返回我想要检索的任何内容的字节。因此,如果我使用这种方法连接到服务器以获取文本文件,我将以字节为单位返回它。我的另一种方法将从这些字节创建一个非常长的字符串。之后,我使用 System.LineSeparator 将长字符串拆分为数组。这是代码:

 public static void fetchProxies(String url) {
Connection c = new Connection();
List<Proxy> tempProxy = new ArrayList<Proxy>();
ByteArrayOutputStream baos =
c.requestBytes(url);
String line = new String(baos.toByteArray());

String[] split = line.split(System.lineSeparator());
//more code to come but the above works fine.

}

这目前有效,但我知道这不是最有效的方法。我

我的问题
不是将字节转换为非常长的字符串,而是将字节转换为 IP 的最有效方法是什么,这样我就可以将每个单独的 IP 添加到数组列表中,然后返回充满 IP 的数组列表?

最佳答案

最有效、最合乎逻辑的方法是创建一个 BufferedReader,包装一个 InputStreamReader,包装 URL 连接的 InputStream。您可以在 BufferedReader 上使用 readLine() 直到它返回 null,并将读取的每一行附加到 IP 地址列表中:

List<String> ipList = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), theAppropriateEncoding))) {
String line;
while ((line = reader.readLine()) != null) {
ipList.add(line);
}
}

请注意,尽管如此,这可能不会对该方法的性能产生太大影响,因为大部分时间都花在等待来自远程主机的 fof 字节上,这比在中构建和拆分字符串要慢得多内存。

关于java - ByteArrayOutputStream 到字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23927192/

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