【问题标题】:Java writing to a file [duplicate]Java写入文件[重复]
【发布时间】:2013-04-17 01:35:13
【问题描述】:

我在用 Java 写入文件时遇到问题。我想写入 .txt 文件,但是当程序写入任何内容时,它会在写入之前删除。我不想要它。我在使用 flw.append 之前使用了 flw.write,但没有任何改变。你能帮帮我吗?

    public void list(String path) throws IOException {

            FileWriter flw=new FileWriter(path);

    flw.append("----------------------------------------------List---------------------------------------------\n");

            for (int i = 0; i < athCtr - 1; i++) {
        flw.append("Author:" + athr[i].getId() + "\t"
                + athr[i].getName() + "\t" + athr[i].getUniv() + "\t"
                + athr[i].getDepart() + "\t" + athr[i].getEmail()+"\n");

        if (athr[i].getArtCtr() != 0) {
            for (int j = 0; j < athr[i].getArtCtr(); j++) {
                flw.append("+" + athr[i].getArticle(j) + ":");
                for (int k = 0; k < artCtr; k++) {
                    if (art[k].getPaperId().equals(athr[i].getArticle(j))) {
                        flw.append("\t" + art[k].getName() + "\t"
                                + art[k].getPublisherName() + "\t"
                                + art[k].getPublishYear()+"\n");


                    }
                }

            }
            flw.append("\n");
        }
    }

    flw.append("Author:" + athr[athCtr - 1].getId() + "\t"
            + athr[athCtr - 1].getName() + "\t"
            + athr[athCtr - 1].getUniv() + "\t"
            + athr[athCtr - 1].getDepart() + "\t"
            + athr[athCtr - 1].getEmail()+"\n");
    if (athr[athCtr - 1].getArtCtr() != 0) {
        for (int j = 0; j < athr[athCtr - 1].getArtCtr(); j++) {
            flw.append("+" + athr[athCtr - 1].getArticle(j) + ":");
            for (int k = 0; k < artCtr; k++) {
                if (art[k].getPaperId().equals(
                        athr[athCtr - 1].getArticle(j))) {
                    flw.append("\t" + art[k].getName() + "\t"
                            + art[k].getPublisherName() + "\t"
                            + art[k].getPublishYear()+"\n");

                }
            }
        }
    }
    flw.append("----------------------------------------------End----------------------------------------------\n\n");
    flw.close();
}

【问题讨论】:

标签: java file


【解决方案1】:

这个问题可能应该被关闭,因为它已经被多次询问和回答,但关键是使用正确的 FileWriter 构造函数,该构造函数将 true 作为第二个参数。第二个 true 参数告诉 Java 打开文件进行追加而不是覆盖。

//FileWriter flw = new FileWriter(path); // not this
FileWriter flw = new FileWriter(path, true);  // but this

事实上,我投票决定将此问题作为重复问题结束。

顺便说一句:您可能不想直接使用 FileWriter 编写,而是希望将其包装在 BufferedWriter 或(我的偏好)PrintWriter 实例中。这将允许您使用println(...) 和其他熟悉的方法简单、更有效地写入文件。

编辑 2:在查看了更多代码之后,我认为实际上您应该考虑使用 PrintWriter 类,然后使用 printf(...) 方法编写,因为这允许格式化字符串输出,这比一堆选项卡,就像您尝试做的那样。

【讨论】:

  • 感谢它非常有用。
  • @Suheyb:不客气。在查看了更多代码之后,我认为实际上您应该考虑使用 PrintWriter 类,然后使用 printf(...) 方法编写,因为这允许格式化字符串输出,这比您尝试的一堆选项卡要好得多去做。
  • 我使用 BufferedWriter 类和 newLine() 方法解决了这个问题。
  • @Suheyb:说真的,看看 PrintWriter 并使用它的printf(...) 方法。你会很高兴你做到了。
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2014-09-05
  • 2012-12-05
  • 2012-05-27
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多