【问题标题】:How to create FileOutputStream from xml file of assets folder in android?如何从android中资产文件夹的xml文件创建FileOutputStream?
【发布时间】:2015-02-09 16:22:54
【问题描述】:

我正在尝试将 xml 节点添加到 assets 文件夹中现有的 xml 文件 favorites.xml。

下面是代码。在该行中创建 FileOutputStream 时抛出 FileNotFoundException

FileOutputStream fos = new FileOutputStream(myContext.getAssets().openFd("favorites.xml").getFileDescriptor());

请帮我解决。提前谢谢。

代码:

import android.content.Context;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


public class XMLWriter{

private Context myContext;
public XMLWriter(Context context)
{
    myContext = context;
}

public void AddFavorites(int id)
{
    try
    {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

        Document document = documentBuilder.parse(myContext.getAssets().open("favorites.xml"));
        Node node = document.getElementsByTagName("favorites").item(0);

        Element favorite = document.createElement("favorite");
        Element idElement = document.createElement("id");
        idElement.appendChild(document.createTextNode(Integer.toString(id)));
        favorite.appendChild(idElement);
        node.appendChild(favorite);

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

        FileOutputStream fos = new FileOutputStream(myContext.getAssets().openFd("favorites.xml").getFileDescriptor());
        StreamResult result = new StreamResult(fos);
        transformer.transform(source, result);

    } catch (ParserConfigurationException | SAXException | IOException | TransformerException e) {
        e.printStackTrace();
    }
}

}

【问题讨论】:

    标签: android xml fileoutputstream


    【解决方案1】:

    您不能更改资产文件夹中的文件。它们是只读的。

    【讨论】:

    • 感谢您的帮助。
    【解决方案2】:

    以下链接应该可以帮助您解决问题

    http://developer.android.com/training/basics/data-storage/files.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      相关资源
      最近更新 更多