java - 使用java删除文件

标签 java file

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

D\:\MyFiles\data\dir1
D\:\MyFiles\data\dir2
D\:\MyFiles\data\dir3
D\:\MyFiles\data\dir4

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

for循环内,我为每个zip文件创建new File对象并调用delete() 删除它们,但它们没有被删除。

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

D\:\MyFiles\data\dir1\a.zip
D\:\MyFiles\data\dir1\b.zip
D\:\MyFiles\data\dir2\b1.zip
D\:\MyFiles\data\dir3\d.zip

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

如何删除文件?我怎样才能给出正确的路径?

更新

这是我正在使用的代码:

// this contains folders start with 'dir' in 'D:\MyFiles\data\'
    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:\MyFiles\data

    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:\MyFiles\data\'
    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:\MyFiles\data\dir3\d.zip : false



    }
}           

最佳答案

阅读您的更新后,我认为这里有两种可能的情况。

  1. 您的申请中仍有一些未完成的内容。您没有碰巧使用 FileInputStream 或其他东西吗?

  2. 另一个进程正在使 .zip 保持忙碌。你打开那​​个文件了吗?尝试关闭资源管理器窗口或类似的东西。

编辑:其他用户的 list :

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

关于java - 使用java删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892852/

相关文章:

java - Android - SQlite - 将空值存储到双字段中?

file - 我将如何在 Delphi 中创建一个文本文件

java - 正在处理保存到 .txt 文件吗?

C++检查文件是否存在,如果存在,改变输出

c - 读取文本并在单独的行中打印每个(字节)字符

java - 无法使用 ArrayList <Java> 加载数据文件

java - 匿名内部类中的变量名可以与类外的参数相同。为什么?

java - 无法使用解析检索查询

java - 如何使用 kafka 模式管理和 Avro 进行重大更改

java - 通过 Java 控制命令行程序 session