В приведенном ниже коде я пытаюсь выбрать xml-файлы из ArrayList xmls, где xmls.get (i) - это абсолютный путь к файлу с расширением .xml. Если этот файл не может быть проанализирован Document, генерируется исключение, и файл перемещается в другой каталог. Однако я не могу переместить или удалить файл, хотя могу скопировать его в каталог destFile. Значения последнего оператора if возвращают true для f.exists()
, f.canRead()
, f.canWrite(
), f.canExecute
, но возвращает false для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));
}
}
} catch (Exception e) {
- этот код ловит все исключения; вы должны поймать конкретное исключение, которое вас интересует (например, «файл не может быть проанализирован с помощью документа»). В противном случае вы попытаетесь удалить файл, если, например, в вашем коде естьNullPointerException
или другая ошибка. - person artbristol   schedule 03.01.2012