已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
昨天关门了。
Improve this question
我正在为我的项目构建一个java swing应用程序。我对这个代码有问题
private void bkDeleteMouseClicked(java.awt.event.MouseEvent evt) {
// Get the index of the selected row
int selectedRow = bkTable.getSelectedRow();
// Check if a row is selected
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "Please select a row to delete");
return;
}
// Delete the selected row from the CSV file
try (Scanner scanner = new Scanner(new File("book_data.csv"));
FileWriter writer = new FileWriter("book_data_temp.csv")) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] row = line.split(",");
if (row.length > 0 && row[0].equals(bkTable.getValueAt(selectedRow, 0))) {
continue; // Skip the selected row
}
writer.write(line + "\n");
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Error deleting row from file");
return;
}
// Delete the original file and rename the temporary file
File originalFile = new File("book_data.csv");
File tempFile = new File("book_data_temp.csv");
if (originalFile.delete()) {
if (!tempFile.renameTo(originalFile)) {
JOptionPane.showMessageDialog(this, "Error renaming file");
return;
}
} else {
JOptionPane.showMessageDialog(this, "Error deleting file");
return;
}
// Delete the selected row from the Table
DefaultTableModel model = (DefaultTableModel) bkTable.getModel();
model.removeRow(selectedRow);
JOptionPane.showMessageDialog(this, "Book Records deleted Sucessfully");
}
当在不同的机器上运行该项目,我得到的文件重命名和删除的问题.怎么修?
1条答案
按热度按时间9nvpjoqh1#
1.您的第一个catch块(“Error deleting row from file”)接受异常(
e
),并且不对它做任何事情-这个异常解释了为什么它不工作。我们不能告诉你,但这个例外可以告诉你。所以,不要把它扔掉,好好利用它。打印或记录或对该异常执行某些操作。1.您正在使用过时的文件API。它的许多问题之一是它不能正确地报告错误。停止使用;使用
java.nio.file
代替。它重命名(Files.move(from, to)
)在失败时抛出异常,而不是返回无用的布尔值。异常的内容会告诉你为什么它不工作。