我正在尝试找到一种更有效的方法来从远程 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 and -XmxYYYYM配置良好,因为如果没有配置好,您可能会面临问题,即您的处理器未使用所有核心。我前段时间遇到过这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)