所以,我正在用Java保存XML数据。我允许用户选择路径和名称。现在,如果文件已经存在,我想用以下消息提示它们:"你想覆盖当前文件吗?"无论如何我能做到吗?感谢
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setApproveButtonText("Save");
chooser.setDialogTitle("Save");
FileFilter filter = new FileNameExtensionFilter("XML File",
new String[] { "xml" });
chooser.setFileFilter(filter);
chooser.addChoosableFileFilter(filter);
int r = chooser.showOpenDialog(this);
if (r == JFileChooser.APPROVE_OPTION) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Shapes.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
File XMLfile = new File(chooser.getSelectedFile().toString()
+ ".xml");
jaxbMarshaller.marshal(myShapes, XMLfile);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:5)
Java变量名称以小写字母开头。如果我理解你的问题,那么你可以使用File.exists()
和
File xmlFile = new File(chooser.getSelectedFile().toString()
+ ".xml");
if (xmlFile.exists()) {
int response = JOptionPane.showConfirmDialog(null, //
"Do you want to replace the existing file?", //
"Confirm", JOptionPane.YES_NO_OPTION, //
JOptionPane.QUESTION_MESSAGE);
if (response != JOptionPane.YES_OPTION) {
return;
}
}
答案 1 :(得分:3)
boolean fileExists = new File("file.xml").exists();
测试此抽象路径名表示的文件或目录是否存在。
<强>返回:强>
true
当且仅当此抽象路径名表示的文件或目录存在时;否则false
。
请务必先检查javadocs!