以下のコードでは、xmls.get(i)が拡張子.xmlのファイルの絶対パスであるArrayList xmlsからxmlファイルを選択しようとしています。このファイルをDocumentで解析できない場合、例外がスローされ、ファイルは別のディレクトリに移動されます。ただし、destFileディレクトリにコピーすることはできますが、ファイルを移動または削除することはできません。 f.exists()
、f.canRead()
、f.canWrite(
)、f.canExecute
ための真の最後のif文の戻り値が、あなたはjava.io以来、ファイルオブジェクトのclose()を呼び出す示唆答えわからないf.renameTo(destFile);
ファイルの削除/移動に失敗する
for(int i=0; i<xmls.size(); i++){
boolean delete = false;
try {
File f = new File(xmls.get(i));
File destFile = new File(structDir + "/badXMLs/" + f.getName());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);
doc.getDoctype();
} catch (Exception e) {
File f = new File(xmls.get(i));
File destFile = new File(structDir + "/badXMLs/" + f.getName());
System.out.println(f.getName());
delete = true;
}
if(delete){
File f = new File(xmls.get(i));
File destFile = new File(structDir + "/badXMLs/" + f.getName());
System.out.println(f.exists());
System.out.println(f.canRead());
System.out.println(f.canWrite());
System.out.println(f.canExecute());
System.out.println(f.renameTo(destFile));
}
}
目的地のディレクトリが別のマウントポイントにあるという理由の1つは、その場合ですか? – fge
'} catch(Exception e){' - このコードは*すべての例外をキャッチします;あなたが興味を持っている特定の例外を捕らえるべきです( 'ファイルはドキュメントによって解析できません')。それ以外の場合は、ファイルに 'NullPointerException'やその他のバグがある場合、ファイルを削除しようとします – artbristol