如何使用Java在文本文件的倒数第二行添加文本

3

我有一个文本文件,其中有多行内容。我需要动态地编辑这个文本文件,但我想在文本文件的倒数第二行添加动态文本。

class FileAppending 
{
    public static void main(String args[]) {

        try{

            OutputStreamWriter writer = new OutputStreamWriter(
                  new FileOutputStream("file path\\x.txt", true), "UTF-8");
            int lines = 0;
            while (br.readLine != 0){
                lines++; // by this i'll get exact line number
            }
            BufferedWriter fbw = new BufferedWriter(writer);
            fbw.write("append txt...");
            fbw.newLine();
            fbw.close();
        }catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

现在我需要一个工具,能够帮助我在倒数第二行添加文本,因为我已经知道总共有多少行。
1个回答

7
你可以用这种方式实现。
    List<String> list = Files.readAllLines(Paths.get("path"));
    list.add(list.size() - 1, "text");
    Files.write(Paths.get("path"), list);

我在这一行代码 'List<String> list = Files.readAllLines(Paths.get("path"));' 遇到了一个错误,提示为 'type List does not take parameters'。你能给予建议吗...!!! - Rakesh Prajapati
你是在导入java.awt.List而不是java.util.List吗?请参见:https://dev59.com/SWAg5IYBdhLWcg3w_fHV - griFlo
@Rakesh,它适用于1.7+。 - Evgeniy Dorofeev
谢谢你们的及时回复...现在我在 'List<String> list = Files.readAllLines(Paths.get("path"));' 处遇到了错误,原因是 '实际和形式参数列表长度不同'。它提示我输入字符集(默认为 null) 像这样 = 'List<String> list = Files.readAllLines(Paths.get("path"),null);' - Rakesh Prajapati
@RakeshPrajapati自从1.8版本以来,只使用路径参数的调用就存在了(您使用的是哪个Java版本?)。如果<1.8,请使用:Files.readAllLines(path, StandardCharsets.UTF_8)……这与仅使用一个参数调用相同。 - griFlo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接