java - Java中写入指定行?

标签 java

为了澄清我的问题,我正在写入位于我的计算机上的文本文件,其中已有文本内容。下面的代码写入文本文件而不删除其任何内容,但现在我想指定它写入的行。目前它有一个 if 语句来捕获行中是否存在单词“Done”,它会被识别,因为它确实写入了文件。我的问题是试图让它写入“完成”行。它写入最底部的最后一行代码。我该如何解决这个问题?

方法 readNumLines 是文件中包含的行数。读取的是文本文件名。

int i = 0;
    BufferedReader reader = new BufferedReader(new FileReader(path+reading));
    BufferedWriter writer = new BufferedWriter(new FileWriter(path+reading, true));
    String line = null;
    while ((line = reader.readLine()) != null && i < readNumLines(reading)-1) {
        if(line.contains("Done")){
            writer.write("\nCHECK!\n");
            writer.close();
        }
        i++;
    }

最佳答案

我建议将整个文件读入变量(字符串、数组或列表)。然后您可以轻松修改特定行并将所有内容写回文件。

1) 将文件读入数组: Store text file content line by line into array

2)操作数组:

for (int i = 0; i < lines.length; i++) {
            String line = lines[i];
            if (line.contains("Done")) {
                lines[i] = line + "\nCHECK!\n";
                break;
            }
}

3) 将字符串数组写入文件: Writing a string array to file using Java - separate lines

该问题也可能与此行有关:

writer.write("\nCHECK!\n");

第一个“\n”强制将“CHECK”写入新行。这假设您的“完成”行是最后一行并且不以“\n”结尾。

关于java - Java中写入指定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536512/

相关文章:

java - 控制另一个类中的对象

java - 我可以使用反射发现 Java 类的声明内部类吗?

java - 如何引用内部类成员的泛型类型?

java 8 过滤一个 ListOfMap 用于检查一个键是否存在,如果存在则收集一个映射

java - 无法在 JOption 对话框中使用 ints 和 sum

java - 随机化游戏板的障碍

java - @SpringApplicationConfiguration 和@ContextConfiguration 的区别

java - 使用 SAX 和 W3C Java 库的 XML/HTML 构建器类无法处理 HTML 输入

java - 在 Amazon S3 中使用 KMS key 解密文件时出错

java - X509 认证路径验证