Java写入文件

时间:2013-04-23 18:02:06

标签: java file

我在使用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();
}

1 个答案:

答案 0 :(得分:6)

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

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

事实上,我投票决定将此问题视为副本。

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

编辑2:在仔细查看代码后,我认为实际上您应该考虑使用PrintWriter类,然后使用printf(...)方法进行编写,因为这样可以实现格式化的字符串输出,这种方法比你想要做的一堆标签。