我有一个装满了一些java.io.File
对象的JComboBox。通过在ComboBox中选择其中一个文件,我想从ComboBox和Filesystem中删除它。删除JComboBox内的文件
代码片段:
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);
除了从组合框中删除文件之外,你还做过其他什么吗? –
*这是因为它已被我的应用程序使用*您是如何在应用程序中使用该文件的? – Blip
@Binkan Salaryman:无非是试图删除它; – grimi