javax.xml.transform.TransformerException: java.io.FileNotFoundException:(В доступе отказано) - PullRequest
2 голосов
/ 13 июля 2011

Я получаю исключение в последней строке кода -

Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource xmlSource = new DOMSource(document);

StreamResult result;
File f = new File(sFilePath);
if (f.exists() == false) {
   result = new StreamResult(f);
} else {
   result = new StreamResult(sFilePath);
}

transformer.transform(xmlSource, result);

Трассировка стека исключений -

java.io.FileNotFoundException: C: \ ProgramData. \ Config \ .xml (доступ отказано) stacktrace javax.xml.transform.TransformerException: java.io.FileNotFoundException: C: \ ProgramData. \ Config \ .xml (доступ отказано) в com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler (Неизвестно Источник) в com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform (Неизвестно Источник) на com..main.dr.a (Неизвестный источник) в com..main.dr.a (неизвестный источник) в com..main.dr.a (неизвестный источник) в com..main.h.k (Неизвестный источник) в com..main.ay.run (Неизвестный источник) Причина: java.io.FileNotFoundException: C: \ ProgramData. \ Config \ .xml (доступ отказано) в java.io.FileOutputStream.open (собственный метод) в java.io.FileOutputStream. (Неизвестный источник) в java.io.FileOutputStream. (Неизвестный источник) ... еще 7 --------- java.io.FileNotFoundException: C: \ ProgramData. \ Config \ .xml (доступ отказано) в java.io.FileOutputStream.open (собственный метод) в java.io.FileOutputStream. (Неизвестный источник) в java.io.FileOutputStream. (Неизвестный источник) в com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler (Неизвестно Источник) в com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform (Неизвестно Источник) на com..main.dr.a (Неизвестный источник) в com..main.dr.a (неизвестный источник) в com..main.dr.a (неизвестный источник) в com..main.h.k (Неизвестный источник) в com..main.ay.run (неизвестный источник) и причина isjava.io.FileNotFoundException: C: \ ProgramData. \ Config \ .xml (доступ отказано)

Ответы [ 4 ]

7 голосов
/ 14 декабря 2012

Попробуйте изменить его, чтобы использовать URI.getPath() файла вместо простой передачи объекта File в StreamResult.

например.StreamResult result = new StreamResult(anOutputFile.toURI().getPath());

1 голос
/ 13 июля 2011

Похоже, права доступа к файлам в ваших XML-файлах, не так ли?

Если вы выполняете из веб-контекста, имейте в виду, что веб-пользователь (например, «никто» в Linux)/ Apache, или «IUSR_MACHINE» в Windows / IIS) имеет МИНИМАЛЬНЫЕ привилегии для доступа к вашей файловой системе.

И это хорошо: особенно если ваше приложение подключено к Интернету:)

PS: Кроме того, путь к каталогу, который вы указали, выглядит неправильно:

C: \ ProgramData. \ Config.xml

Вы уверены, что он не должен быть"C: \ Program Data \ config.xml" ????

PPS: Пока мы говорим о "правах доступа к файлам";В Windows Vista, Windows 7 и Server 2008 существуют более строгие правила, запрещающие доступ к чему-либо в корневом каталоге диска (например, «c: \») или в системных каталогах (например, «c: \ windows» или «c: \ Program files»).

0 голосов
/ 03 декабря 2013

попробуйте

file = new File(System.getProperty("user.dir") + "/YOURFILEADDRESS.xml");
0 голосов
/ 23 мая 2012

Попробуйте проверить, имеет ли файл, который вы пытаетесь преобразовать, значения и они действительны.

Может быть, вы перебираете набор файлов, используя цикл, и иногда вы пытаетесь преобразовать файлы, которые не имеют никакого значения, например null или "".

...