Java删除不删除

时间:2013-02-23 14:36:49

标签: java file-io directory

我正在编写一些删除目录中所有文件的代码,到目前为止我有:

@ViewScoped
@ManagedBean
public class Delete {

    public void DeleteFiles() throws IOException {
        System.out.println("Called deleteFiles");
        File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/build/web/resources/pdf/up617648/");

        String[] myFiles;
        if (file.isDirectory()) {
            myFiles = file.list();
            for (int i = 0; i < myFiles.length; i++) {
                File myFile = new File(file, myFiles[i]);
                System.out.println(myFile);
                myFile.delete();
            }
        }

    }
}

当我调用它时,我可以看到所有文件都被调用,但没有任何东西被删除,为什么会这样,这就是我在控制台中得到的:

INFO: Called deleteFiles
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\build\web\resources\pdf\up617648\1.png
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\build\web\resources\pdf\up617648\lecture04_A_slides.pdf

路径中的所有文件都被删除了,但在Netbeans中,我仍然可以看到资源文件夹中的文件,即使这个文件夹的直接路径是空的,我也做了一个干净的构建。

这有点奇怪,它从目录中删除文件很好,在Netbeans中它仍然显示文件,重新启动netbeans然后文件显示回目录。

1 个答案:

答案 0 :(得分:1)

Windows文件系统对Java删除的方式并不友好。很可能其他东西持有该文件的引用/句柄,这使得Windows阻止其删除。如果您之前触摸过同一个文件并且没有正确清理资源,那么甚至JVM本身也可能是这些东西。