Java 读/写大文件时尽可能少地使用内存的最佳方法?
我使用的是移动设备(android),有一个大约50mb的大文本文件。我希望能够打开文件并搜索到特定位置,然后从该位置开始将数据读入缓冲区。如果我想使用尽可能少的内存,那么使用FileReader+BufferedReader是最好的方法吗Java 读/写大文件时尽可能少地使用内存的最佳方法?,java,android,Java,Android,我使用的是移动设备(android),有一个大约50mb的大文本文件。我希望能够打开文件并搜索到特定位置,然后从该位置开始将数据读入缓冲区。如果我想使用尽可能少的内存,那么使用FileReader+BufferedReader是最好的方法吗 BufferedReader in = new BufferedReader(new FileReader("foo.txt")); in.skip(byteCount); // in some cases I have to read from a
BufferedReader in
= new BufferedReader(new FileReader("foo.txt"));
in.skip(byteCount); // in some cases I have to read from an offset
// start reading a line at a time here
我还需要写入文件,只需添加数据,因此:
FileWriter w = new FileWriter("foo.txt", true);
w.write(someCharacters);
我最感兴趣的是,如果误用了错误的文件读写器类,我可能会在读写之前意外地将整个文件内容加载到内存中
谢谢您可以尝试使用内存映射文件()。但我不确定会为此分配多少堆空间。基本上,您不想读取整个文件,而只想读取其中的某一部分。在这种情况下,请改用:
我的字典应用程序使用RandomAccessFile访问大约45MB的数据,而每个Android应用程序只能使用16MB的内存,同时运行我的字典引擎的服务也只能使用大约2MB的内存(其中大部分是由Davlik VM使用的,而不是我的搜索引擎)。因此,本课程肯定能如期完成。只要确保只有在您认为需要时才决定将某些内容保留在内存中即可