繁体   English   中英

在URL中有效地将文件从URL读入byte []

[英]Efficiently read file from URL into byte[] in Java

我正在尝试找到一种更有效的方法从远程URL读取文件并将其保存到字节数组中。 这是我目前拥有的:

private byte[] fetchRemoteFile(String location) throws Exception {
  URL url = new URL(location);
  InputStream is = null;
  byte[] bytes = null;
  try {
    is = url.openStream ();
    bytes = IOUtils.toByteArray(is);
  } catch (IOException e) {
    //handle errors
  }
  finally {
    if (is != null) is.close();
  }
  return bytes;
}

如您所见,我目前将URL传递给方法,在该方法中,它使用InputStream对象读取文件的字节。 此方法使用Apache Commons IOUtils。 但是,此方法调用往往需要相对较长的时间才能运行。 当一个接一个地检索数百,数千或数十万个文件时,它变得非常慢。 有没有办法可以改进这种方法,使其更有效地运行? 我考虑过多线程,但我想保留它作为最后的手段。

你这样做的方式似乎绝对可以。

但如果你说:

“但是,这种方法调用往往需要相对较长的时间来运行”

你可以有以下问题:

  • 网络,连接问题

  • 您确定在单独的线程中下载每个文件吗?

如果您正在使用多线程,请确保VM args -XmsYYYYM-XmxYYYYM配置良好,因为如果不是您可能遇到问题,那么您的处理器不使用所有内核。 我前段时间遇到过这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM