删除JComboBox中的文件

时间:2015-07-06 10:14:14

标签: java swing file-io combobox

我有一个JComboBox填充了一些java.io.File个对象。通过在ComboBox中选择其中一个文件,我想从ComboBox和Filesystem中删除它。

代码段:

deleteButton.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            int dialogButton = JOptionPane.YES_NO_OPTION;
            int dialogResult = JOptionPane.showConfirmDialog(null, "Are you sure?", "Warning", dialogButton);

            if (dialogResult == JOptionPane.YES_OPTION)
            {
                Path path = Paths.get(mailingLists.getSelectedItem().toString());
                mailingLists.removeItem(mailingLists.getSelectedItem());

                try
                {
                    Files.delete(path);
                    JOptionPane.showMessageDialog(null, "File deleted!", "SUCCESS", JOptionPane.INFORMATION_MESSAGE);
                } catch (IOException e1)
                {
                    JOptionPane.showMessageDialog(null, e1.toString(), "ERROR", JOptionPane.ERROR_MESSAGE);
                    e1.printStackTrace();
                }
            }
        }
    });

它给出了这个异常:java.nio.file.FileSystemException [...] file already in use这是因为它被我的应用程序使用,然后我首先考虑从ComboBox中删除它然后使用Files.delete(path);删除它但仍然有例外。

怎么了?

P.S。

这是我第一次处理这种情况,所以我想如果最好使用File f = new File("path"); f.delete();代替Files.delete(path);

编辑:提供了有关JComboBox加载的更多信息。

划痕:

    LinkedList<File> listFolder = new LinkedList<File>();
    listFolder.add(new File("mailinglists"));//<--- root folder

    File[] stuffInFolder = listFolder.get(0).listFiles();

    JComboBox<File> mailingLists = new JComboBox<File>(stuffInFolder);

4 个答案:

答案 0 :(得分:1)

听起来你需要关闭文件。 当您打开文件时,操作系统将阻止文件被删除,直到文件连接关闭。

答案 1 :(得分:1)

我建议,而不是JComboBox填充一些java.io.File个对象,使用带有path作为String的文件名。当你必须删除文件时,使用路径创建一个File的对象并删除它。

答案 2 :(得分:0)

使用Java.io.File.delete()

try
{
   File f = new File(path);
   if(f.delete())
      JOptionPane.showMessageDialog(null, "File Deleted Succesfully!");
   else
      JOptionPane.showMessageDialog(null, "File couldn't be deleted!");
}

答案 3 :(得分:0)

解决!

我正在使用&#34;有问题的&#34;由同事开发的外部图书馆。它的目标是读取.properties文件。一旦readed,文件仍然打开。

已修复,现在一切正常。