我正在尝试找到一种更有效的方法从远程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.但是,此方法调用往往需要相对较长的时间才能运行.当一个接一个地检索数百,数千或数十万个文件时,它变得非常慢.有没有办法可以改进这种方法,使其更有效地运行?我考虑过多线程,但我想保留它作为最后的手段.
最佳答案 你这样做的方式似乎绝对可以.
但如果你说:
“However, this method call tends to take a relatively long time to
run”
你可以有以下问题:
>网络,连接问题
>您确定在单独的线程中下载每个文件吗?
如果您正在使用多线程,请确保VM args -XmsYYYYM和-XmxYYYYM配置良好,因为如果不是您可能遇到问题,那么您的处理器不使用所有内核.我前段时间遇到过这个问题.