我创建了一个Java fxml和一个对应的控制器类。
在控制器类中,我有:
@FXML
private TextArea addBox;
@FXML
private Button addButton;
我还有一个带有名为addButton的附加方法的“添加”按钮,因此当按下“添加”按钮时,来自TextArea的输入将添加到我尝试的现有Data.txt文件中:
private void addButton(ActionEvent event) throws IOException {
Writer output;
output = new BufferedWriter(new FileWriter("Data.txt", true));
output.append(addBox.getText());
output.close();
}
和
@FXML
private void addButton(ActionEvent event) throws IOException {
try(FileWriter fw = new FileWriter("Data.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw))
{
out.println(addBox.getText());
} catch (IOException e) {
}
类似地,如果我将John放入TextArea(addBox)并单击“删除”按钮,则它应删除其中包含John的行。我无法使用这两种方法。 AddBox.getText();有什么问题吗?它不应该获取输入并将其视为String吗?
@FXML
private void deleteButton(ActionEvent event) throws FileNotFoundException, IOException {
File inputFile = new File("Data.txt");
File tempFile = new File("myTempFile.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String lineToRemove = addBox.getText();
String currentLine;
while ((currentLine = reader.readLine()) != null) {
// trim newline when comparing with lineToRemove
String trimmedLine = currentLine.trim();
if (trimmedLine.equals(lineToRemove)) {
continue;
}
writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close();
reader.close();
boolean successful = tempFile.renameTo(inputFile);
}
在我看来,没有任何语法错误,因为它运行时没有错误。但是,它不会向现有的.txt文件添加任何内容。
答案 0 :(得分:0)
您的印刷机是否用于多个实例?您可能希望在每次写入后尝试使用pw.flush()-否则它可能会做一些奇怪的事情。这里有更多
How to use flush() for PrintWriter
此外,您是否知道addbox.getText()是否产生任何要传递给印刷机的文本?您总是可以添加一个中间变量,并检查其中是否包含任何变量,以便快速,轻松地进行故障排除。
此外,我会在注释中添加它,但是我还不能-如果您正在寻找可能发生的每种可能的异常,则可能想捕获Exception e而不是IOException。