我有一個帶有10億數字pi的.txt文件。我在文件中讀取了一個字符串,但是我得到一個OutOfMemoryError。它與1個MIllion數字合作。我將字符串保存爲char []數組。 當我在整個數組中循環時,是否有可能以某種方式流式傳輸.txt文件?我只需要一種方法來以數組的形式訪問所有10億位數。閱讀巨大的文本文件Java
3
A
回答
4
0
這不僅是可能的:它既是極力推薦,並在實踐完成。通常做的是重用與Java庫(InputStream等)相同類型的接口。
在這種情況下,這可能意味着一個新的IntegerInputStream類,它將數字輸出爲流。這個班本身可以將呼叫轉移到FileInputStream
。在內部,您可以使用char []數組來存儲緩衝區並提高性能,或者按照Pavel的建議通過BufferedInputStream
指定呼叫,但最好將消費者與內部緩衝區管理隔離開,並保持適當的抽象級別以供使用大小寫(pi的小數點)。
0
您可以使用FileInputStream
打開文件,然後以byte []爲單位讀取它以避免OOMError。
0
根據文檔
你應該能夠得到長度的字符串Integer.MAX_VALUE的(總是2147483647(231 - 1)由Java說明書中,陣列的最大尺寸,這String類使用內部存儲)或一半的最大堆大小(因爲每個字符是兩個字節),取其較小者
這就是爲什麼你得到的異常,
,如果你不真正需要的全1B字符。您可以嘗試使用不會將整個內容加載到內存中的緩衝區。
BufferedReader br = new BufferedReader(new FileReader(new File("path to file")));
char[] data=new char[1000000] ;//however many chars you want;
int i=0;
while ((c = br.read()) != -1 && i<data.length) {
data[i++]= c;
}
br.close();
相關問題
- 1. 如何閱讀大文本文件 - java
- 2. 在Python中閱讀巨大文件
- 3. 閱讀大文本文件
- 4. Android - 閱讀巨大(30MB)文本文件並壓縮它們
- 5. 閱讀大文本文件的n行
- 6. 閱讀Java中的文本文件
- 7. Java的閱讀文本文件
- 8. 閱讀meshgrid從文件中的巨蟒
- 9. 閱讀大文本文件和內存
- 10. PHP閱讀大文本文件
- 11. 閱讀文本文件和填充的JTextArea(閱讀NetBeans Java)
- 12. 閱讀大文件
- 13. Java的閱讀大量文本文件分隔符
- 14. 閱讀python中的巨大文本時遇到錯誤
- 15. 閱讀Java文件
- 16. 閱讀巨大的tar.gz文件流類似的方式,逐行
- 17. 如何閱讀大文本文件,並在Java中使用它
- 18. 閱讀大文本文件時發生Java OutOfMemoryError
- 19. 「java.lang.OutOfMemoryError:Java堆空間」在閱讀巨大的zip文件時
- 20. 閱讀Magento中巨大的產品XML文件
- 21. 在Java中閱讀大文件
- 22. 閱讀大文件(Java堆空間)
- 23. 閱讀大文件錯誤「outofmemoryerror」(java)
- 24. Python讀物只巨大的文本文件的末尾
- 25. 需要閱讀巨大的Excel文件與Java 60列使用Apache POI
- 26. 搜索巨大的文本文件
- 27. PHP從巨大的文本文件
- 28. 選擇從巨大的文本文件
- 29. 從文本文件中讀取巨大的字符串
- 30. 在Python中讀取一個巨大的文本文件
什麼樣的處理你需要讀取的數據呢? – Berger
我正在循環查看整個字符數組以尋找特定的數字...所以只需通過數組循環。多數民衆贊成在 – Steakie
你是什麼意思的「尋找一定數量」?數字是pi。你的意思是「尋找特定的數字序列」?如果是這樣,多少位數? –