无法流式传输到编写器

时间:2012-03-04 04:28:38

标签: java memory stream httpclient

我正在尝试将文件直接流式传输到Web服务。 为此,我使用

创建了一个Writer
     URL url = new URL("http://localhost:9200/tree/public/");
     URLConnection urlconnection=url.openConnection();
     urlconnection.setDoOutput(true);
     ((HttpURLConnection)urlconnection).setRequestMethod("POST");
     ((HttpURLConnection)urlconnection).setRequestProperty("Content-type", "text/html");
     Writer out=new OutputStreamWriter(urlconnection.getOutputStream();

接下来我继续将数据写入其中,

while(<Read from file , line>){
    out.write(line);
    out.flush();
}

out.close();

在这里,我希望主内存不会用于存储整个文件内容。因为一次只能存在一行文件。

但是在执行代码时,内存使用量急剧上升,非常清楚,文件内容保存在主内存中。 在堆转储中发现PosterOutputStream是占用大部分空间的那个。

1 个答案:

答案 0 :(得分:1)

启用分块流解决了这个问题。  ((HttpURLConnection类)的URLConnection).setChunkedStreamingMode(1024 * 1024);