Java获取行总数,然后写入特定行

Java获取行总数,然后写入特定行,java,bufferedreader,bufferedwriter,Java,Bufferedreader,Bufferedwriter,我一直坚持使用File、BufferedReader和BufferedWriter写入特定行 我试图实现的是获取文本文件的总行数(-3)&写入该行 目前它只是擦除整个文件&没有写入任何内容 我正在做的事情的图像: (图中)第25行为空,第26行不包含文档。它包含“}” &我的代码: package com.tests.writer; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io

我一直坚持使用File、BufferedReader和BufferedWriter写入特定行

我试图实现的是获取文本文件的总行数(-3)&写入该行

目前它只是擦除整个文件&没有写入任何内容

我正在做的事情的图像:

(图中)第25行为空,第26行不包含文档。它包含“}”

&我的代码:

    package com.tests.writer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFrame;

public class NewWriter {

    static Integer tableCount;

    static File file;
    static FileWriter fw;
    static FileReader fr;
    static BufferedWriter bw;
    static BufferedReader br;

    public static void main(String[] args) {
        JFrame frame = new JFrame("Test {New Writer}");
        frame.setBounds(500, 500, 500, 500);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setAutoRequestFocus(true);
        try {
            startApplication();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void startApplication () throws IOException {
        writeToFile ();
    }

    private static void writeToFile () throws IOException {
        Integer lineTCount = 0;
        file = new File("Tables.txt");
        if (file.exists()) {
            fw = new FileWriter(file.getAbsolutePath(), true);
            fr = new FileReader(file.getAbsolutePath());
            bw = new BufferedWriter(fw);
            br = new BufferedReader(fr);

            for (String line = br.readLine(); line != null; line = br.readLine()) {
                lineTCount++;
                System.out.println(lineTCount);
              }
            System.out.println(lineTCount);
            bw.write("Test Text to insert");
            System.out.println("done");
            System.exit(0);
        } else {
            file.createNewFile();
            System.out.println("New File = " + file.toString());
            writeToFile();
        }
    }

}
如果有更简单的方法,我愿意接受所有想法,因为我仍然不熟悉Java.io


&如果有人能告诉我这是正确的。我可能需要将整个文件添加到列表中,添加新文本,然后重新写入文件。

在文件中循环时,bw指针不会移动。使用此选项可写入文件中的特定位置。还有,为什么有两个变量lineCount和lineTCount

public void write(String s,
         int off,
         int len)
           throws IOException
参考:


编辑:你是对的,我的错。您必须阅读前面的内容->进行所需的更改,然后再次重写整个文件

有几件事你做得有点过头了。 首先,;文件返回为空的原因是您没有调用

bw.close();
完成对文件的写入后

我不知道如何写入文件的特定部分。我想没有

你要做的是重新写入文件。基本上,做一个临时副本,然后像以前一样写所有的行,除了第三行到最后一行

见这个问题:

(我不知道如何将问题标记为重复)


BufferedWriter的“write(String s,int off,int len)”方法实际上表示

注;这不是“写入文件中的特定位置”


编辑

我不会使用
System.exit(0)。告诉你的操作系统“执行失败”。您应该通过排除这一行让程序正常关闭。

请参阅:

为什么同时使用时间br和写入行的bw。write(str,int,int)用于打印字符串的一部分。我试图将字符串打印到本例中的特定行(lineTCount-3),文件中的atm是第25行。我已经更新了代码&去掉了另一个不需要的整数。
Writes a portion of a String.