系统资源不足,无法完成所请求的服务

时间:2014-10-06 11:53:47

标签: java fileutils

尝试使用HttpGet

下载大数据时出现上述错误
String uri = "";
getMethod = executeGet(uri);
httpClient.executeMethod(getMethod);
InputStream istream  = getMethod.getResponseBodyAsStream();
byte[] data = IOUtils.toByteArray(istream);
FileUtils.writeByteArraytoFile(new  File("xxx.zip"),data)

2 个答案:

答案 0 :(得分:1)

您正在使用可能导致问题的临时字节数组。 您可以直接将流的内容写入您的文件。

String uri = "";
getMethod = executeGet(uri);
httpClient.executeMethod(getMethod);
InputStream istream  = getMethod.getResponseBodyAsStream();
IOUtils.copy(istream, new FileOutputStream(new  File("xxx.zip"));

答案 1 :(得分:1)

您正在将整个回复读入byte[](记忆)。相反,您可以在从istream读取输出时将输出流式传输,如

File f = new  File("xxx.zip");
try (OutputStream os = new BufferedOutputStream(new FileOutputStream(f));) {
    int c = -1;
    while ((c = istream.read()) != -1) {
        os.write(c);
    }
} catch (Exception e) {
    e.printStackTrace();
}