我需要将一个非常大的文件(1.11gb)读入内存并以字节为单位进行处理。我做这件事的唯一方法是使用一个ArrayList(我不能使用一个字节[],因为那么它将超出限制)。 没有办法让文件变小(我用它作为测试来测试我的程序处理数据的时间)。 然后我需要将一个ArrayList作为一个文件放回到硬盘驱动器(仍然是1.11GB) 我并不担心写作,因为我正在阅读。 速度也是至关重要的,所以要避免子分段,除非任何人在那里都有快速的方法。从ArrayList中读取/写入文件内容<Byte>
-1
A
回答
3
您试图以错误的方式解决此问题(并且它不会工作)。
解决这个可能的方法是:
重新设计算法,它不需要读取整个文件到内存......一气呵成。
将数据读取到多个
byte[]
对象中以避开2^31
数组大小限制。使用多个
ByteBuffer
对象映射文件;见Java MemoryMapping big files。
1 - 它不会起作用,因为ArrayList
有Object[]
内,因此是受您与字节数组相同的限制。另外,ArrayList<Byte>
将占用比代表相同字节数的byte[]
多4至8倍的内存。或者更多,如果用Byte
填充ArrayList<Byte>
对象实例化方式不正确。
2 - 的Buffer
的API都使用int
大小和偏移量,以及(AFAIK)不支持的文件> = 2^31字节映射到单个Buffer
。
相关问题
- 1. 读取文本文件并从特定内容写入文件
- 2. 将文件内容读入ArrayList
- 3. 在java中使用ArrayList写入和读取文件(使用ArrayList)
- 4. 如何从TreeSet读取内容并写入文件?
- 5. 从io.Writer写入的内容中读取内容
- 6. 从文件流中读取内容c#
- 7. Android。从文件中读取内容
- 8. 从.epub文件中读取内容
- 9. 读/写文件从内容提供商
- 10. 写入和从文件中读取
- 11. NSDocumentDirectory - 写入并从文件中读取
- 12. 从python中读取和写入文件
- 13. 从python中读取/写入android文件
- 14. 从文件中读取/写入对象
- 15. 从plist文件中写入和读取
- 16. 用c从/中读取/写入文件
- 17. 如何在Java中将Arraylist的内容写入xml文件
- 18. 写入并读取ArrayList <File>到Android缓存中
- 19. 写入和读取文件中的ArrayList对象
- 20. 在arraylist中读取和写入.xls文件
- 21. 读取文件内容并写入控制台
- 22. 读取文件并将其内容写入另一个C++
- 23. 读取和写入文件的内容10次
- 24. c编程读取()和写入()内容到文件
- 25. PHP:读取现有的xml文件并写入新内容
- 26. 读取并写入特定内容
- 27. 读取和写入arraylist到文本文件
- 28. AS3 - 从.ini文件读取内容
- 29. 将输入写入文件并从C++中读取文件
- 30. 从Jsoup读取内容后编写一个xhtml文件
请解释:_I不能用一个byte []因为那将超过limit_ –
'ArrayList的'是'的byte []'引擎盖 –
kaykay
@kaykay不,它不是,它是一个对象下[] 。它使用4或8倍于字节数组的内存。 – immibis