关键字: 有限内存处理 超大文本文件
google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);
现有一个每行固定格式的.txt文本,我需要每行进行解析、处理并导入数据库。
我采用的是readline的方式处理。
当行数不多时,还可以。
当行数多时,内存占用大,效率低。
请问如何处理更合理?
针对所有文件(文本,非文本)
File file = new File("filename");
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file),10*1024*1024); // 用10M的缓冲读取专门针对文本文件,还可以使用BufferedReader指定缓冲
File file = new File("filename");
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
BufferedReader reader = new BufferedReader(new InputStreamReader(fis),10*1024*1024);// 用10M的缓冲读取文本文件我给的代码是占用10M的缓冲,也就是说,无论你读取多大的文件,他只占用大约10M的内存空间进行处理。他会自动从文件里面读取剩余部分的。
你的代码只需要继续 readLine(), 就行了。
我采用的是readline的方式处理。
当行数不多时,还可以。
当行数多时,内存占用大,效率低。
请问如何处理更合理?
针对所有文件(文本,非文本)
- File file = new File("filename");
- BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file),10*1024*1024); // 用10M的缓冲读取
- File file = new File("filename");
- BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
- BufferedReader reader = new BufferedReader(new InputStreamReader(fis),10*1024*1024);// 用10M的缓冲读取文本文件
你的代码只需要继续 readLine(), 就行了。