使用java删除文件



在我的java应用程序中,我使用FilenameFilter获取给定目录中的zip文件。我的目录结构如下所示。

D:MyFilesdatadir1
D:MyFilesdatadir2
D:MyFilesdatadir3
D:MyFilesdatadir4

zip文件位于dir文件夹中。我只给我的程序D\:\MyFiles\data,它使用FilenameFilter查找以dir开头的文件夹,然后在dir文件夹中查找以zip结尾的文件。

for loop中,我为每个zip文件创建new File对象,并调用delete()删除它们,但它们不会被删除。

我已经使用getPath()方法打印了文件路径;输出如下所示。

D:MyFilesdatadir1a.zip
D:MyFilesdatadir1b.zip
D:MyFilesdatadir2b1.zip
D:MyFilesdatadir3d.zip

然后我手动创建了一个File对象作为File f = new File("D/:/MyFiles/data/dir1/a.zip")并尝试删除。它成功了。

如何删除文件?如何给出正确的路径?

更新

这是我正在使用的代码:

// this contains folders start with 'dir' in 'D:MyFilesdata'
    Vector<String> dirList = utl.identifyDir(conf);
File dir;
for (int i = 0; i < dirList.size(); i++) {
// in my properties file ITEM_FOLDER is written as ITEM_FOLDER=D:\MyFiles\data
//  LOG.fine(conf.readConfig(Configuration.ITEM_FOLDER)); returns D:MyFilesdata
    dir = new File(conf.readConfig(Configuration.ITEM_FOLDER)
            + File.separator + dirList.get(i));
    // this contains all the files ends with 'zip' in 'dir' folders in 'D:MyFilesdata'
    Vector<String> zipFiles = utl.identifyZipFiles(dir);
    for (int x = 0; x < zipFiles.size(); x++) {
        /* delete */
        File sourcePath = new File(
                conf.readConfig(Configuration.ITEM_FOLDER)
                        + File.separator + dirList.get(i)
                        + File.separator + zipFiles.get(x));
            boolean sp = sourcePath.delete();
            LOG.fine("sourcePath : " + sourcePath.getPath() + " : "
                    + sp);
                // one of LOG prints is D:MyFilesdatadir3d.zip : false

    }
}           

在阅读了您的更新后,我认为这里可能发生了两件事。

  1. 您的应用程序中仍有打开的内容。你没有碰巧使用FileInputStream或其他什么?

  2. 另一个过程是使.zip保持繁忙。你打开那个文件了吗?尝试关闭资源管理器窗口或类似的操作。

编辑:来自其他用户的检查表:

  • 检查路径是否正确,例如file.exists()返回什么
  • 检查您是否有权限作为运行应用程序的用户删除该文件
  • 检查您的代码中是否没有打开该文件的句柄(例如,您是否刚刚从中读取并没有关闭输入流?)
  • 检查您是否没有在桌面应用程序中打开该文件

当您创建一个新的File对象进行测试时,与使用getPath时有所不同。请注意路径名中的所有斜杠是\而不是/。

相关内容

  • 没有找到相关文章

最新更新