【问题标题】:Error. BufferedWriter repeating lines at end of file错误。 BufferedWriter 在文件末尾重复行
【发布时间】:2015-02-10 09:40:06
【问题描述】:

我这里有一个错误,不知道发生了什么。

我的班级得到一个哈希图向量和一条规则,然后将该哈希图写入该路径中的文件。

这是代码:

/* 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. Linea: eufekeptuil;null;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo

PRF:: HashmapToFile:: Iteracion: 91. Linea: hwukbzakmfuutrhnfzm;null;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo

PRF:: HashmapToFile:: Iteracion: 92. Linea: Securitas Europe;29-JAN-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo

PRF:: HashmapToFile:: Iteracion: 93. Linea: Tarifa New 544;05-FEB-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo

但是......当我看到文件时......我在最后:

Securitas Europe;29-JAN-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo -OK。完美-

Tarifa New 544;05-FEB-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo -OK。完美-

然后:

N-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo (重复和未完成的行)

Tarifa New 60;15-JAN-15;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo (重复行)

vjvrqgxavk;null;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo;Inactivo (重复行)

又重复了 15 行。

有什么线索吗?

谢谢大家

【问题讨论】:

  • (所有重复的行不会出现在日志中两次,只出现一次,当进程需要将它们绘制在合适的位置时)。第一次重复出现在文件的第 40 行,第二次出现在 41 行,第三次出现在 42 行……然后又出现了一次。
  • 为什么在 2015 年使用原始类型?为什么不在 2015 年使用 try-with-resources?
  • 好吧,你至少可以避免使用原始类型;另外,使用列表而不是向量等

标签: java bufferedwriter


【解决方案1】:

忘记问题。文件很好。问题出在下载器上。系统正在将更多数据放入该功能中。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多