2015-02-10 64 views
0

我在這裏有一個錯誤,不知道發生了什麼。錯誤。 BufferedWriter在文件末尾重複行

我的課得到hashmaps和rute的矢量,然後將該hashmap寫入該路由中的文件。

這是代碼:

/* Variables de entrada */ 
    Vector vecHm = (Vector) context.getAttribute(sVecHashmap); 
    String strFileLocation = "" + context.getAttribute(sFileLocation); 


    // Inicializamos variables 
    FileWriter fileWriter = null; 
    BufferedWriter bufferedWriter = null; 

    try 
    { 
     fileWriter = new FileWriter(strFileLocation,true); 
     bufferedWriter = new BufferedWriter(fileWriter); 
     String linea = ""; 
     String lineaCabecera = ""; 


     for (int i=0;i<vecHm.size();i++) 
     { 
      HashMap hm = (LinkedHashMap) vecHm.get(i); 
      Iterator it = hm.entrySet().iterator(); 
      linea = ""; 
      while (it.hasNext()) 
      { 
       Map.Entry pairs = (Map.Entry)it.next(); 
       if (i==0) 
       { 
        if (lineaCabecera.equals("") == false) 
        { 
         lineaCabecera = lineaCabecera + ";"; 
        } 
        lineaCabecera = lineaCabecera + (String)pairs.getKey(); 
       } 
       if (linea.equals("") == false) 
       { 
        linea = linea + ";"; 
       } 
       linea = linea + (String)pairs.getValue(); 
       //it.remove(); // avoids a ConcurrentModificationException 
      } 

      System.out.println("PRF:: HashmapToFile:: Iteracion: " + i + ". Linea: " + linea); 

      if (i==0) 
      { 
       System.out.println("PRF:: Pinto Cabecera. "); 
       bufferedWriter.write(lineaCabecera); 
       bufferedWriter.newLine(); 
       //bufferedWriter.write('\n'); 
      } 
      bufferedWriter.write(linea); 
      bufferedWriter.newLine(); 
      //bufferedWriter.write('\n'); 
     } 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
     throw new WFException(" ERROR writing the file"); 
    } finally 
    { 
     try 
     { 
      // Cerramos el fichero 
      bufferedWriter.close(); 
      fileWriter.close(); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
      throw new WFException(" ERROR closing the file"); 
     } 
    } 

我有一個跟蹤,顯示我在文件中寫行:

的System.out.println(「PRF :: HashmapToFile :: Iteracion :「+ i +」。Linea:「+ linea);

,我看到的是這樣的(我將只放最後四個迭代)日誌:

PRF :: HashmapToFile :: Iteracion:90凌特:eufekeptuil;空; Inactivo; Inactivo; Inactivo; Inactivo ; Inactivo; Inactivo

PRF :: HashmapToFile :: Iteracion:91凌特:hwukbzakmfuutrhnfzm;空; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo

PRF :: HashmapToFile :: Iteracion:92凌特:Securitas Europe; 29-JAN-15;無效;無效;無效;無效;無效;無效

PRF :: HashmapToFile :: Iteracion:93凌特:塔裏新544; 05-FEB-15; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo

可是......當我看到這個文件。 ..我有這最後:

Securitas歐洲; 29-JAN-15; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo -OK。完美 -

Tarifa New 544; 05-FEB-15; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo -OK。 Perfect-

然後:

N-15; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo (重複和未完成的線)

塔裏新60; 15-JAN-15 ; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo (重複線)

vjvrqgxavk; NULL; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo; Inactivo (重複線)

又重複了另外15行。

任何線索?

謝謝全部

+0

(所有行重複不會出現在日誌中兩次,只有一次,當進程需要將它們繪製在合適的位置)。第一次重複出現在第40行的文件中,第41次出現,第42次出現,然後再出現一次。 – Pevi 2015-02-10 09:49:01

+0

爲什麼在2015年使用原始類型?爲什麼不在2015年使用試用資源? – fge 2015-02-10 09:50:06

+0

我們使用java 6. :( – Pevi 2015-02-10 10:25:21

回答

1

忘掉問題。這些文件很好。問題在於下載器。該系統將更多的數據放入該功能中。