当前位置: 代码迷 >> Java相关 >> 问个java读文件的问题,如何高速检索文件内容?
  详细解决方案

问个java读文件的问题,如何高速检索文件内容?

热度:111   发布时间:2009-11-10 21:58:39.0
问个java读文件的问题,如何高速检索文件内容?
一个csv文件,只有两列,一列是name,一列是value。这样的name value大概有4000对。
现在想用name检索value,原本打算把4000对都予读出来,放到hashmap里,但是导致了内容溢出。
请问,还有什么办法能够实现高速的上述查找吗?
搜索更多相关的解决方案: 检索  文件  java  

----------------解决方案--------------------------------------------------------
package test;

import java.util.HashMap;
import java.util.Map;
import java.io.*;

public class MountDataProcess {

    public static Map<String, String>[]  getBigDatas(String  fileName) {
        BufferedReader br = null;
        int rowNumber = 0;     //用于统计文件的行数,也就是记录的个数
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
            while(br.readLine() != null){
                rowNumber++;
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
        //类似于在web中经常做的分页,可以分批保存处理。
        Map<String, String>[] mapArray = new HashMap[10];
        //对数组初始化
        for (Map<String, String> map : mapArray) {
            map = new HashMap<String, String>();
        }
        
        for (int i = 0; i < rowNumber; i++) {
            String str = null;
            try {
                str = br.readLine();  //从文件中读出一行数据,也就是一条记录
            } catch (IOException e) {
                e.printStackTrace();
            }
            String[] s = str.split(" ");//这里假设你的列之间是用空格分割的
            for (int j = 1; j < 11; j++) {
                if(i > rowNumber/10*j && i > rowNumber/10*(j+1)){
                    mapArray[j - 1].put(s[0], s[1]);
                }
            }
        }
        
        return mapArray;
        
    }

}


上面是我临时写的一个方法,可以尝试,自己先编译看有错误没,我这里没有那么多的数据。

思路很简单:
模仿在页面分页时候的算法,建立一个Map的数组,然后将数据分批保存进不同的Map中就可以了。
----------------解决方案--------------------------------------------------------
把文件资料插入到数据库中,再从数据库中查找,这样比较快些
----------------解决方案--------------------------------------------------------
  相关解决方案