Java 为什么文件不';使用另一个按钮后不会被删除

Java 为什么文件不';使用另一个按钮后不会被删除,java,file,exception-handling,Java,File,Exception Handling,Im编辑。我还发现,在使用“其他”按钮后无法删除该文件,因为它会抛出java.nio.file.FileSystemException:2018年6月30日星期六09hr19min37sec.txt:该进程无法访问该文件,因为它正被其他进程使用。第二个按钮的哪个代码部分会导致系统继续读取或访问文件,因此第一个删除按钮无法删除文件? 我有一个从组合框中删除选定文件的按钮和另一个显示月度利润的按钮。问题是,当我单击borrar(删除)按钮时,它会正确删除所选文件,但当我单击Ventas del me

Im编辑。我还发现,在使用“其他”按钮后无法删除该文件,因为它会抛出java.nio.file.FileSystemException:2018年6月30日星期六09hr19min37sec.txt:该进程无法访问该文件,因为它正被其他进程使用。第二个按钮的哪个代码部分会导致系统继续读取或访问文件,因此第一个删除按钮无法删除文件? 我有一个从组合框中删除选定文件的按钮和另一个显示月度利润的按钮。问题是,当我单击borrar(删除)按钮时,它会正确删除所选文件,但当我单击Ventas del mes(月利润)按钮,然后我想再次单击borrar(删除)按钮时,它不会从组合框中删除所选文件。这只会在每次单击“月利润”按钮后单击“删除”按钮时发生。如何解决此问题

Set<String> results = new HashSet<String>();
Set<String> Año = new HashSet<String>();
Set<String> Mes = new HashSet<String>();
Set<String> Dia = new HashSet<String>();
Set<String> textos = new HashSet<String>();
String[] meses = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre",};
Set<String> meses1 = new HashSet<String>();
File[] files = new File("C:\\Users\\SATELITE\\Documents\\NetBeansProjects\\Restaurante").listFiles();
   public Recibos() {
    initComponents();

    for (File file : files) {
        for (int i = 0; i < meses.length; i++) {
            if (file.getName().contains(meses[i])) {
                meses1.add(meses[i]);
            }
        }
        if (file.isFile()) {
            if (file.getName().contains(".txt")) {
                results.add(file.getName());
            }
        }
    }
    DefaultComboBoxModel DefaultComboBoxModel2 = new DefaultComboBoxModel(meses1.toArray());
    cbMes.setModel(DefaultComboBoxModel2);
}
第二个按钮,点击后,它会导致第一个按钮不会像它应该删除的那样删除

private void btnVentasMesActionPerformed(java.awt.event.ActionEvent evt) {                                             
    suma = 0;
    List<String> list = new ArrayList<String>();
    Iterator<String> iterator = results.iterator();

    while (iterator.hasNext()) {
        String setElement = iterator.next();

        File file = new File(setElement);
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String text = null;

            while ((text = reader.readLine()) != null) {
                if (text.contains("Total")) {
                    list.add(text);
                }
            }
        } catch (Exception e) {
        }

    }


    //good way:
    Iterator<String> iterator2 = list.iterator();
    while (iterator2.hasNext()) {
        String setElement = iterator2.next();
        String numberOnly = setElement.replaceAll("[A-Z,a-z,:]", "");
        suma = suma + Double.parseDouble(numberOnly);


    }

    String totalDeVentas = "La venta total del mes de " + cbMes.getSelectedItem().toString() + "\n fue de :" + suma;
    txtMostrar.setText(totalDeVentas);

}  
private void Btnventsmesactionperformed(java.awt.event.ActionEvent evt){
suma=0;
列表=新的ArrayList();
迭代器迭代器=results.Iterator();
while(iterator.hasNext()){
字符串setElement=iterator.next();
File File=新文件(setElement);
BufferedReader reader=null;
试一试{
reader=newbufferedreader(newfilereader(file));
字符串文本=空;
而((text=reader.readLine())!=null){
如果(文本包含(“总计”)){
列表。添加(文本);
}
}
}捕获(例外e){
}
}
//好办法:
迭代器迭代器2=list.Iterator();
while(iterator2.hasNext()){
字符串setElement=iterator2.next();
String numberOnly=setElement.replaceAll(“[A-Z,A-Z,:]”,“”);
suma=suma+Double.parseDouble(数字);
}
字符串totalDeVentas=“La venta total del mes de”+cbMes.getSelectedItem().toString()+”\n fue de:“+suma;
txtMostrar.setText(totalDeVentas);
}  
更改为

if (file.getName().equals(text)) {
     file.delete();
}
但看起来你也在接受任何错误

 } catch (Exception e) {
 }
改为

 } catch (Exception e) {
      e.printStackTrace();
 }
改为

if (file.getName().equals(text)) {
     file.delete();
}
但看起来你也在接受任何错误

 } catch (Exception e) {
 }
改为

 } catch (Exception e) {
      e.printStackTrace();
 }

我已经解决了。我没有关闭这个阅读器

reader = new BufferedReader(new FileReader(file));
reader.close();

谢谢你的帮助。

我已经解决了。我没有关闭这个阅读器

reader = new BufferedReader(new FileReader(file));
reader.close();

谢谢您的帮助。

谢谢您的帮助我已经更正了它。我还发现它在使用其他按钮后无法删除,因为它抛出了java.nio.file.FileSystemException:2018年6月30日星期六09hr19min37sec.txt:该进程无法访问该文件,因为它正被另一个进程使用。该进程的哪个代码部分第二个按钮导致系统继续读取文件,因此第一个按钮“删除”无法删除文件?感谢您的帮助,我已经更正了它。我还发现,在使用另一个按钮后无法删除它,因为它抛出java.nio.file.FileSystemException:2018年6月30日星期六09hr19min37sec.txt:进程无法访问文件正在被另一个进程使用。第二个按钮的哪个代码部分会导致系统继续读取该文件,因此第一个按钮“删除”无法删除该文件?如果使用
尝试使用资源
会更好如果使用
尝试使用资源