删除我使用FileWriter,java编写的最后一行

时间:2016-09-13 09:52:29

标签: java filewriter

(我已经好几次这样的问题,但最后决定问怎么做) 我的代码是这样的(不是真的,但你得到了重点):

FileWriter fW = new FileWriter(new File(fileName));
while (entries.hasNext()) {
    fW.write(entry.next());
    fW.write("\n");
end

我在java中有一个文件编写器,用它来写入文件的条目。在每个条目之后,我跳到下一行(每个条目一行)。我最初并不知道实际上会有多少条目。

现在这给了我一个额外的行在文件的末尾(但是没有条目填写它)。有没有(简单)方法使用文件编写器删除最后一行。

(在这种情况下,您可以通过在while循环外写入第一个然后交换顺序来获得类似的结果:

fW.write("\n");
fW.write(entry.next());

但如果有类似的话:

fW.deleteLast()

知道这将是简单而有用的。我还没有找到类似的东西。)

2 个答案:

答案 0 :(得分:0)

你可以对你的循环做一个小改动,这样:

while (entries.hasNext()) {
    fW.write(entry.next());
    fW.write("\n");
}

成为这个:

while (entries.hasNext()) {
    fW.write(entry.next());
    if(entries.hasNext())
        fW.write("\n");
}

可替换地:

while (entries.hasNext()) {
    fW.write(entry.next());
    fW.write("\n");
}

变为:

if(entries.hasNext()) 
        fW.write(entry.next());

while (entries.hasNext()) {
        fW.write("\n");
    fW.write(entry.next());
}

答案 1 :(得分:0)

而不是写入文件写入StringBuilder。然后,一旦完成,只需从StringBuilder中删除最后一个字符,然后将内容写入文件。缺点是如果您的内容太大(100兆字节),那么就会出现内存使用问题。