关闭后,文件仍在java(tm)平台se二进制文件中打开

时间:2013-05-08 08:51:45

标签: java file-io bufferedreader

在我的应用程序中,有两个文件(例如CustomerProducts)都包含在BufferedWrite中,两个文件都在同一个后台线程中使用。任务完成后两个文件都关闭,然后在主线程文件被删除,但只有一个删除不起作用!

如果我尝试从OS中删除,那么当进程完成时生效:在Java(tm)平台SE二进制文件中打开文件!

我已经尝试过这样做了:

object = null;
System.gc();

但没有任何改变。

任何想法如何找到两个文件中的一个未关闭的原因?

公共类工厂类{

public BufferedReader readFile(String fileName) throws IOException {

        String fileName = "";

        File file = new File(fileName);
        try{
            br = new BufferedReader(new FileReader(file));
        }
        catch(FileNotFoundException ex){
            ex.getStackTrace();
        }

    return br;

}

}

公共类主类{

public void analyzer() throws IOException {

    try {

        while((line = customer.readLine()) != null) {

        do work...

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

    private void closeFiles() { 

        try {
            customer.close();
            products.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

}

公共类删除类{

public void delete(String path) {

    File dir = new File(path);

    for (File file :dir.listFiles()) {

        for (MyObject obj : modecVOs) {
            if (file.getName()equals(obj.getName())) {
                file.delete();
            }
        }
    }
}

}

0 个答案:

没有答案