我正在嘗試讀取大文件(> 150MB)並將文件內容作爲ByteArrayOutputStream
返回。這是我的代碼...讀取文件(> 150MB)並將文件內容作爲ByteArrayOutputStream返回
private ByteArrayOutputStream readfileContent(String url) throws IOException{
log.info("Entering readfileContent ");
ByteArrayOutputStream writer=null;
FileInputStream reader=null;
try{
reader = new FileInputStream(url);
writer = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = reader.read(buffer);
while (bytesRead = > -1) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[1024];
}
}
finally {
writer.close();
}
log.info("Exiting readfileContent ");
return writer;
}
我得到一個java.lang.OutOfMemoryError: Java heap space exception
。我曾嘗試增加java堆大小,但它仍然會發生。有人可以幫助解決這個問題。
不要這樣做。該文件太大,無法一次讀入內存。你爲什麼認爲你需要一個ByteArrayOutputStream?來電者將如何處理此流?爲什麼不只是返回一個FileInputStream並讓調用者讀取它呢? – Cheeso
你可能想讀大塊內容的文件內容 – Rakesh
備註:1. in!= null'是多餘的--'in'永遠不會變成'null'。 2.你對'長度'var做什麼是一種不正當的行爲。 –