【发布时间】: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。在我的程序中,我正在读取属性文件并获取该路径。