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

Remove last line I wrote using FileWriter, java

(我遇到过好几次这种问题,但最后决定问问怎么做) 我的代码是这样的(不是真的,但你明白了):

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()

知道它会简单而有用。我还没有找到类似的东西。)

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

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());
}

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