Java 删除JComboBox中的文件
我有一个JComboBox,里面装满了一些Java 删除JComboBox中的文件,java,swing,file-io,combobox,Java,Swing,File Io,Combobox,我有一个JComboBox,里面装满了一些java.io.File对象。通过在组合框中选择其中一个文件,我想从组合框和文件系统中删除它 代码段: deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int dialogButton = JOptionPane.YES_NO_OPTION;
java.io.File
对象。通过在组合框中选择其中一个文件,我想从组合框和文件系统中删除它
代码段:
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[…]文件已经在使用中
这是因为我的应用程序正在使用它,然后我想首先从组合框中删除它,然后使用Files.delete(path)删除它代码>但仍有例外
怎么了
附言
是我第一次在这个上下文中处理,所以我想如果使用File f=new File(“path”);f、 删除()代码>而不是文件。删除(路径)代码>
编辑:提供了有关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);
LinkedList listFolder=新建LinkedList();
添加(新文件(“邮件列表”)// 听起来你需要关闭这个文件。
打开文件时,操作系统将阻止删除文件,直到与文件的连接关闭 我建议,不要用JComboBox
填充一些java.io.File
对象,而是使用路径为字符串的文件名。当您必须删除文件时,使用路径创建file
的对象并将其删除。使用Java.io.file.delete()
解决了
我使用的是一个同事开发的“被窃听”的外部库。它的目标是读取.properties文件。读取后,该文件仍处于打开状态
已修复,现在一切正常。除了从组合框中删除文件之外,您还做过其他事情吗?这是因为我的应用程序使用了该文件。您如何在应用程序中使用该文件?@Binkan Salaryman:只不过尝试删除它@布利普:我不相信我的猜测。我认为文件被锁定是因为它仍然在JCobmoBox中。@AndreaGrimandi不,这不是文件
的工作方式,只是一个文件/路径的抽象表示,直到您实际尝试对其执行操作(如删除),它们之间没有“物理”连接,没有任何东西会阻止您删除它们。例如,您可以使用File#delete
删除一个文件,然后使用File
的相同实例,使用File#createNewFile
创建一个具有相同名称和路径的新文件……因此在我的示例中,我应该使用mailinglist.getSelectedItem()获取该文件
然后关闭它或尝试其他方法?您需要获取打开文件的流,然后关闭它:[link]()您应该使用if
语句测试f.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!");
}