【问题标题】:Java delete not deletingJava删除不删除
【发布时间】:2013-02-23 14:36:48
【问题描述】:

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

@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然后文件又出现在目录中。

【问题讨论】:

  • 也许您的程序运行时没有足够的权限来删除文件?
  • 我添加了一个编辑,它从文件夹中删除了文件,但在 netbeans 中,resource/pdf/up...即使使用直接路径没有文件,我仍然可以看到文件
  • Netbeans 会在需要时更新其文件系统视图。 :) 这不可靠。
  • 构建 jar。关闭 NetBeans。运行程序。查看结果。
  • 谢谢您已经完成并使用新问题更新了问题

标签: java file-io directory


【解决方案1】:

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

【讨论】:

  • Windows file system isn't really friendly to the way Java does deletions. - 如果为真,可能应该重新措辞,因为 Java 不能很好地在 Windows 上实现删除。
  • 这是一种 Windows 行为,可防止当前使用的文件删除。这不是一个错误的 java 实现。
猜你喜欢
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 2013-08-31
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2013-12-12
相关资源
最近更新 更多