8

我面临以下代码的一些问题

       try {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

            //root elements
            Document doc = docBuilder.newDocument();

            Element rootElement = doc.createElement("subcompany");
            doc.appendChild(rootElement);

            //id elements
            Element id = doc.createElement("id");
            id.appendChild(doc.createTextNode(subCompanyId != null ? subCompanyId : " "));
            rootElement.appendChild(id);

            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);

            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

            String xmlPath = "/project/MallDirectory/mall";

            //EDITED for File creation before writing.
            boolean isFileCreated = new File(xmlPath, "subcompany.xml").createNewFile();
            System.out.println(isFileCreated);                

            StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml"));

            transformer.transform(source, result);

        } catch (Exception ex) {
            ex.printStackTrace();
        }

运行后,我收到以下错误:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory)

它曾经在我的另一个项目上工作,但这次不是。这里到底出了什么问题?

已编辑:

这是我要写入的路径。该文件已创建,但它是空的。

在此处输入图像描述

4

4 回答 4

21

我设法解决了这个问题。

这是错误:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory)

我在想也许变压器正在尝试将 xml 写入此路径“文件:/project/MallDirectory/mall/subcompany.xml”。我不知道它是怎么发生的,因为我专门设置了文件路径'/project/MallDirectory/mall/subcompany.xml',并且没有以'file:/'为前缀。

因此,我设法通过这样做来解决它:

...

//ERROR CODE:
//StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml"));
//
StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml").getPath());
transformer.transform(source, result);

...
于 2013-03-11T04:19:20.170 回答
0

在任何时间点可以处于打开状态的文件数量是特定于操作系统的(当然,可以配置)并且您已达到上限。查看您的应用程序的代码库,是否有一些尝试打开文件但在使用后不关闭流的代码。检查此类代码。

于 2013-03-10T15:43:19.897 回答
0

您定义的目录路径不正确。查看 JavaDoc 以确定您需要哪种形式的目录路径才能到达您的文件位置。

JavaDoc java.io.File

于 2013-03-10T15:43:33.747 回答
0

如果“/project”是您的项目名称,则尝试“./MallDirectory/mall”,否则尝试“./project/MallDirectory/mall”。请仔细观察其中包含点的字符串。

于 2013-03-10T15:49:22.130 回答