在我的应用程序中,有两个文件(例如Customer
和Products
)都包含在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();
}
}
}
}
}