私のjava
アプリケーションでは、指定されたディレクトリのファイルFilenameFilter
を取得するために使用しています。zip
私のディレクトリ構造は次のようになります。
D\:\MyFiles\data\dir1
D\:\MyFiles\data\dir2
D\:\MyFiles\data\dir3
D\:\MyFiles\data\dir4
zip
ファイルはdir
フォルダにあります。私はD\\:\\MyFiles\\data
自分のプログラムだけに与えています、そしてそれはフォルダを見つけるのはdir
使用で始まりFilenameFilter
、そしてファイルを見つけるのzip
はdir
フォルダで終わります。
内部では、ファイルごとにオブジェクトをfor loop
作成し、それらを削除するために呼び出していますが、それらは削除されません。new File
zip
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
}
}