在Java Swing中保存文件时检查文件是否存在

时间:2014-10-26 04:51:36

标签: java swing save

所以,我正在用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();
        }
    }
}

2 个答案:

答案 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