在我的java
應用程序中,我使用FilenameFilter
在給定目錄中獲得zip
文件。我的目錄結構如下所示。使用java刪除文件
D\:\MyFiles\data\dir1
D\:\MyFiles\data\dir2
D\:\MyFiles\data\dir3
D\:\MyFiles\data\dir4
zip
文件在dir
文件夾。我只給我的程序D\\:\\MyFiles\\data
,它發現文件夾開始dir
使用FilenameFilter
,然後找到文件結尾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'? – Joetjah 2013-02-15 10:40:07
嗯,路徑看起來像「D \:\ MyFiles ...」而不是「D:\ MyFiles ...」是否正確? – Dragon 2013-02-15 10:40:36
你檢查delete()返回的內容嗎? – ellak 2013-02-15 10:40:41