在java中以10000块的形式读取CSV文件

时间:2014-09-26 10:08:56

标签: csv chunks

我们的应用程序中有一个模块,它读取一个大约有50000行的CSV文件。目前我们使用缓冲读取器读取行并迭代它并将其存储在POJO中。但是当文件被读取时,它有时会显示OutOfMemory Error。任何人都可以为此提出解决方案。任何人都可以指导我以10000块的方式阅读文件

这是示例代码

ArrayList<sampleClass> classList=new ArrayList<sampleClass>();
try
{
        br = new BufferedReader(new InputStreamReader(is));
        line = br.readLine();
        while ((line = br.readLine()) != null)
        {
            String[] columnValues = line.split(cvsSplitBy);
            SampleClass obj=new sampleClass();
            if(validation1)
                obj.setproperty1(columnvalues[0]);
            if(validation2)
                obj.setproperty2(columnvalues[1]);
                ......
                ......
                ......
                if(validationN)
                obj.setproperty3(columnvalues[n-1]);
            classList.add(obj);
        }
}
catch()
{
        ...
}

return classList;

1 个答案:

答案 0 :(得分:0)

试试这个,希望它会对你有帮助。

BufferedReader reader = new BufferedReader(new FileReader(filename));
            int checkCount = 0;
            int chunkTemp = 0;
            int i = 0;
            String temp = "";
            BufferedWriter writer = null;
            while ((temp = reader.readLine()) != null) {
                if (chunkTemp == 0) {
                    writer = new BufferedWriter(new FileWriter(filename + i));
                }

                ++checkCount;
                ++chunkTemp;
                writer.write(temp);
                if(chunkTemp!=10000){
                     writer.newLine();
                }

                if (chunkTemp == 300) {
                    chunkTemp = 0;
                    ++i;
                    writer.close();
                }
            }