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

Posted

技术标签:

【中文标题】在Java Swing中保存文件时检查文件是不是存在【英文标题】:Checking if file exists when saving file in Java Swing在Java Swing中保存文件时检查文件是否存在 【发布时间】:2014-10-26 04:51:36 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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;
     

【讨论】:

【参考方案2】:
boolean fileExists = new File("file.xml").exists();

测试此抽象路径名表示的文件或目录是否存在。

返回: true 当且仅当此抽象路径名表示的文件或目录存在; false 否则。

始终先检查javadocs!

【讨论】:

以上是关于在Java Swing中保存文件时检查文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中存文件到ORACLE数据库里怎么做?

在 mp4 容器中保存视频时 FPS 太高

Java swing拖放记事本[关闭]

如何在 Java Swing 应用程序的默认浏览器中打开 HTML 文件?

用JAVA实现把数据保存到一个TXT文件中

java - 如何在java swing中检查当前窗口大小?