我们的应用程序中有一个模块,它读取一个大约有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;
答案 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();
}
}