2012-03-04 54 views
1

我想直接將文件流式傳輸到Web服務。 對於我創建使用無法傳輸到作家

 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

你在說多少內存?在封面下會有一些不可避免的緩衝。 – 2012-03-04 05:01:36

+0

我正在說GB的記憶。我不在乎輕微的緩衝。如果它是「輕微的」 – 2012-03-04 05:17:15

+0

如果您在GB範圍內看到內存,則還有其他問題。我們不能沒有更多的細節。 – 2012-03-04 05:19:40

回答

1

啓用分塊流式解決了這個問題。 ((HttpURLConnection)urlconnection).setChunkedStreamingMode(1024 * 1024);