【问题标题】:Delete files using java使用java删除文件
【发布时间】:2013-02-15 10:37:20
【问题描述】:

在我的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 loop 中,我正在为每个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



    }
}           

【问题讨论】:

  • 成功了?所以它奏效了?您尝试删除文件是什么?我也看到D/:/MyFiles,那是不对的。你没有使用D:/MyFiles
  • 嗯,路径看起来像“D\:\MyFiles...”而不是“D:\MyFiles...”对吗?
  • 你检查 delete() 返回的内容吗?
  • 你遇到了什么异常?
  • @Joetjah 我将父路径存储在 java properties 文件中。我使用fileChooser 选择它。在我的属性文件中,它写为D\:\\MyFiles\\data。在我的程序中,我正在读取属性文件并获取该路径。

标签: java file


【解决方案1】:

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

  1. 您的应用程序中仍有一些打开的内容。您没有碰巧使用 FileInputStream 或任何东西?

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

编辑:来自其他用户的清单:

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

【讨论】:

  • 有一个FileInputStream,我忘了关闭它。现在好了。
【解决方案2】:

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

【讨论】:

  • 我没有使用getPath 创建文件对象。它仅用于打印以查找问题。
  • 然后发布你的一些代码。 for 循环是什么样的?每个人都只是在这里猜测,因为我们不知道它的样子。
猜你喜欢
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
相关资源
最近更新 更多