2014-09-26 48 views
0

我們的應用程序中有一個模塊,用於讀取具有50000行左右的CSV文件。目前我們使用緩衝讀取器讀取行並迭代它並將其存儲在POJO中。但是,有時讀取文件時會顯示OutOfMemory錯誤。任何人都可以爲此提出解決方案。任何人都可以指導我閱讀該文件中的10000在java中以10000爲單位讀取CSV文件

此塊是示例代碼

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

試試這個,希望它會幫助你。

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(); 
       } 
      }