所以我正在尝试将文本添加到txt文件中,我已成功完成此操作,系统会提示用户他们要添加的内容,并在运行我的程序后打开txt文件时将其包含在内。
现在,这是我的问题:我第一次尝试在txt文件中添加内容时,它会创建一个空白行,然后它将包含用户添加的信息,原因是因为当Java打开我的时候文件,键入光标位于最后一行的底部,没有空格,可以输入信息,如下所示:
好吧,很酷,所以这意味着每当我从Java程序向txt文件中添加任何内容时,它都会自动在新行上,我不需要添加任何println间距来输入新行。现在这里又出现了另一个问题,在Java将新文本放入txt文件后,它将键入的光标留在新行的END处,而不是在没有数据的新行下面。所以这意味着如果我尝试两次添加新信息,它将出现在同一行而不是新行。所以要解决这个问题,我只需添加一个
pw.println();
我的打印编写器开头的语句,以确保它将光标放在新行上。但是现在,当我在添加最后一行代码后再次尝试再次添加数据时,它将在最后一行数据和我添加的新数据行之间创建一个空白空间。像这样:
现在,每当用户想要搜索数据库时,因为我的搜索中有空检查,每当程序遇到原始数据和已添加的新数据之间的空行时,它就不会继续搜索,因此用户添加到数据库的任何信息都是无用的,由于分隔它的空行,Java将无法搜索它。
基本上,要么我保留pw.println()并且我的所有数据都出现了,但原始数据之间有一个空格所以无法搜索它,或者我可以删除它,然后是所有新数据添加出现在同一行,这不是我想要的。
这是将数据添加到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文件并将光标放在我想要的工作区域。
答案 0 :(得分:0)
我们的想法是在 end 处写入println()(它添加一个行结束),写下应该在一行上的内容。如果你在任何其他数据之前println(),它很可能会创建一个空行(除非最后一行没有行结束)。
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();