写入 Android 中现有的资源 XML 文件

发布于 2024-11-26 20:15:31 字数 1239 浏览 4 评论 0原文

我正在尝试写入 Android 设备上 /res/xml 目录中的现有 XML 文件。两个问题:

1)这些文件可以被覆盖吗? 2)如果是这样,我怎样才能获得该文件的句柄?

我尝试此操作无济于事:

    FileOutputStream fos;

    try {
        fos = openFileOutput("/res/xml/scores.xml", Context.MODE_PRIVATE);
        fos.write(writer.toString().getBytes());
        fos.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

更新

尝试使用以下方式从文件中读取:

....
        PriorityQueue<Score> scores = new PriorityQueue<Score>();
    XmlPullParserFactory xmlFac = XmlPullParserFactory.newInstance();
    XmlPullParser qXML = xmlFac.newPullParser();
    File scoresFile = new File(c.getExternalFilesDir(null), "scores.xml");
    InputStream is = new FileInputStream(scoresFile);
    qXML.setInput(is,null);
....

尝试使用以下方式写入文件:

....
    File scoresFile = new File(getExternalFilesDir(null), "scores.xml");
    OutputStream os = new FileOutputStream(scoresFile);

    os.write(writer.toString().getBytes());
    os.flush();
    os.close();
....

I am trying to write to an existing XML file in the /res/xml directory on an Android device. Two questions:

1) Are these files able to be overwritten?
2) If so, how can I obtain a handle to that file?

I am trying this to no avail:

    FileOutputStream fos;

    try {
        fos = openFileOutput("/res/xml/scores.xml", Context.MODE_PRIVATE);
        fos.write(writer.toString().getBytes());
        fos.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

UPDATE

Trying to read from the file using:

....
        PriorityQueue<Score> scores = new PriorityQueue<Score>();
    XmlPullParserFactory xmlFac = XmlPullParserFactory.newInstance();
    XmlPullParser qXML = xmlFac.newPullParser();
    File scoresFile = new File(c.getExternalFilesDir(null), "scores.xml");
    InputStream is = new FileInputStream(scoresFile);
    qXML.setInput(is,null);
....

Trying to write to the file using:

....
    File scoresFile = new File(getExternalFilesDir(null), "scores.xml");
    OutputStream os = new FileOutputStream(scoresFile);

    os.write(writer.toString().getBytes());
    os.flush();
    os.close();
....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方。的韩爷 2024-12-03 20:15:31

您需要使用设备上的外部存储。您不能也不应该写入资源。相反,请将资源复制到外部存储,然后在那里进行修改。

编辑:您还可以使用应用程序的 内部数据文件夹用于保存文件,但同样,如果您想修改资源,您需要将资源复制到那里。这将允许文件保留在您的应用程序内部。

You need to use the external storage on the device. You can't and shouldn't be writing to the resources. Instead, copy the resource to the external storage, and then modify it there.

EDIT: You can also use your application's internal data folder to save files to, but again, you will want to copy your resource there if you want to modify it. This will allow the files to remain internal to your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文