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