У меня есть следующий способ сохранения новых данных в XML-файле. Он хранит историю чата:Безопасная запись Java в файл xml?
public void addMessage(String from, String agentName, String msg, String time, String channel){
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
org.w3c.dom.Document doc = docBuilder.parse(filePath);
Node data = doc.getFirstChild();
org.w3c.dom.Element root = doc.createElement(channel);
org.w3c.dom.Element message = doc.createElement("message");
org.w3c.dom.Element _sender = doc.createElement("sender"); _sender.setTextContent(from);
org.w3c.dom.Element _content = doc.createElement("content"); _content.setTextContent(msg);
org.w3c.dom.Element _recipient = doc.createElement("recipient"); _recipient.setTextContent(agentName);
org.w3c.dom.Element _time = doc.createElement("time"); _time.setTextContent(time);
message.appendChild(_sender); message.appendChild(_content); message.appendChild(_recipient); message.appendChild(_time);
root.appendChild(message);
data.appendChild(root);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filePath));
transformer.transform(source, result);
}
catch(Exception ex){
System.out.println("Exceptionmodify xml");
}
}
Проблема все вдруг я получаю исключение Exceptionmodify xml
в настоящее время trown. Я предполагаю, что это связано с тем, что я получаю доступ к этому методу из нескольких разных потоков, и он перепутал xml-file
.
Любые идеи, как я мог бы сделать эту тему безопасной?
Не думаю. Распечатайте stacktrace исключения и убедитесь, что вы решаете правильную проблему ... – meriton
Непонятный источник проблемы. Покажите нам стек. – Archer