Синтаксический анализ XML Усекает Путь к файлу
-
21-09-2019 - |
Вопрос
Я получаю исключение FileNotFoundException со следующим кодом:
File dataFile = new File("\\xx.xxx.xx.xxx\PATH\TO\FILE.xml");
if(dataFile.isFile())
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// Printing out File displays full path
Document doc = db.parse(dataFile);
}
Это приводит к исключению FileNotFoundException:\PATH O\FILE.xml.Похоже, что он урезал IP-адрес из пути.Я проверил, что имя пути не содержит пробелов, и если я распечатаю путь к файловому объекту перед синтаксическим анализом, отобразится полный путь.Есть какие-нибудь идеи?
Я использую Java 1.5_14.
Решение
Попробуйте изменить
File dataFile = new File("\\xx.xxx.xx.xxx\PATH\TO\FILE.xml");
Для
File dataFile = new File("\\\\xx.xxx.xx.xxx\\PATH\\TO\\FILE.xml");
помните, что в Java \ экранирует следующий символ...
Редактировать:Предполагая, что вы получаете FNFE из строки:
Document doc = db.parse(dataFile);
тогда это означает, что datafile.isFile()
проходит, и поэтому файл должен существовать.Просто в целях тестирования вы можете попробовать изменить это на:
Document doc = db.parse(dataFile.toURI().toString());
или
Document doc = db.parse(new InputSource(new FileReader(dataFile)));
И посмотрим, что произойдет.
Другие советы
Попробуйте использовать полный URL-адрес со схемой вместо unc-пути.
file://xxx.xxx.xxx.xxx/path/to/file.xml