将信息添加到 txt 文件 - 游标问题

Adding information to a txt file - Issue with cursor

所以我正在尝试将文本添加到 txt 文件中,我已经成功地做到了这一点,系统会提示用户他们想要添加的内容,并且当我在 [=40] 之后打开 txt 文件时会包含这些内容=] 我的程序。

现在,这是我的问题:我第一次尝试向 txt 文件添加内容时,它创建了一个空白行,并且在该空白行下将包含用户添加的信息,这是因为当 Java打开我的文件,打字光标在最后一行的底部,没有space的地方,准备输入信息,像这样:

好吧,这意味着每当我从我的 Java 程序向 txt 文件添加任何内容时,它会自动换行,我不需要添加任何 println 间距来输入新队。现在这里出现了另一个问题,在 Java 将新文本放入 txt 文件后,它将键入光标留在添加的新行的末尾,而不是在它下面没有数据的新行。所以这意味着如果我尝试两次添加新信息,它将出现在同一行而不是新的。所以为了解决这个问题,我只是添加了一个

pw.println();

我的印刷机开头的声明,以确保它将光标放在新行上。但是现在,当我在添加最后一行代码后再次尝试添加数据时,它会在最后一行数据和我添加的新数据行之间创建一个空 space 。像这样:

现在,每当用户想要搜索数据库时,因为我在搜索中进行了空检查,每当程序遇到我的原始数据和已添加的新数据之间的空行时,它就不会继续搜索,因此用户添加到数据库中的任何信息都变得毫无用处,并且 Java 将无法搜索它,因为它被空行分隔。

基本上,要么我保留 pw.println() 并显示我的所有数据,但在原始数据之间有一个 space,因此无法搜索它,或者我可以删除它然后添加的所有新数据都出现在同一行,这不是我想要的。

这是将数据添加到 txt 文件的代码:

    public static void add() throws IOException
{
    String filename="Elements.txt";
    PrintWriter pw = new PrintWriter(new FileWriter(filename,true));
    pw.println();
    String element=JOptionPane.showInputDialog(null, "Enter name of element.", "Add an Element", JOptionPane.INFORMATION_MESSAGE);;
    pw.write(element + ",");

    String symbol=JOptionPane.showInputDialog(null, "Enter symbol of element.", "Add an Element", JOptionPane.INFORMATION_MESSAGE);;
    pw.write(symbol + ",");

    String atomicNumber=JOptionPane.showInputDialog(null, "Enter atomic number.", "Add an Element", JOptionPane.INFORMATION_MESSAGE);;
    pw.write(atomicNumber + ",");

    String atomicMass=JOptionPane.showInputDialog(null, "Enter atomic mass", "Add an Element", JOptionPane.INFORMATION_MESSAGE);;
    pw.write(atomicMass + ",");

    String valence=JOptionPane.showInputDialog(null, "Enter # of valence electrons.", "Add an Element", JOptionPane.INFORMATION_MESSAGE);;
    pw.write(valence);

    pw.close();

}

有什么方法可以操纵 txt 文件上的光标以确保所有添加的新数据都正确显示,以便用户以后可以搜索它?打开 txt 文件并将光标放在我想要的位置不起作用。

想法是在 end 处执行 println()(添加行尾)以写入任何应该在行上的内容。如果你在任何其他数据之前打印ln(),它很可能会创建一个空行(除非最后一行没有行尾)。

String filename="Elements.txt";
PrintWriter pw = new PrintWriter(new FileWriter(filename,true));

String element= ... ;
pw.write(element + ",");

// ... more ...

String valence=...;
pw.write(valence);

pw.println();

pw.close();