我有一个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);
答案 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,文件仍然打开。
已修复,现在一切正常。