将Xml文件从Res / Xml文件夹复制到设备存储

时间:2011-09-12 13:09:40

标签: android xml inputstream outputstream

我正在尝试将一个xml文件从res / xml文件夹复制到设备存储中,但我真的在努力解决这个问题。

我知道起点是让InputStream读取xml文件。这可以通过以下方式实现:

InputStream is = getResources().openRawResource(R.xml.xmlfile);

最终输出流将是:

file = new File("xmlfile.xml");
FileOutputStream fileOutputStream = new FileOutputStream(file);

但我真的在努力如何正确,准确地读取和复制初始xml文件中的所有信息。

到目前为止,我已尝试使用各种InputStreamOutputStream来读写(DataInputStreamDataOutputStreamOutputStreamWriter等,但是我仍然没有设法正确。生成的xml文件中有一些未知字符(编码问题?)。谁可以帮我这个事?谢谢!

3 个答案:

答案 0 :(得分:0)

res/xml开始,您不能将所有文件放在assets文件夹中,然后使用下面的代码

Resources r = getResources();
AssetManager assetManager = r.getAssets();

File f = new File(Environment.getExternalStorageDirectory(), "dummy.xml");
InputStream is = = assetManager.open("fileinAssestFolder.xml");
OutputStream os = new FileOutputStream(f, true);

final int buffer_size = 1024 * 1024;
try
{
    byte[] bytes = new byte[buffer_size];
    for (;;)
    {
        int count = is.read(bytes, 0, buffer_size);
        if (count == -1)
            break;
        os.write(bytes, 0, count);
    }
    is.close();
    os.close();
}
catch (Exception ex)
{
    ex.printStackTrace();
}

答案 1 :(得分:0)

我认为你应该使用原始文件夹。看看http://developer.android.com/guide/topics/resources/providing-resources.html

答案 2 :(得分:0)

您也可以使用此代码:

   try {
        InputStream input = getResources().openRawResource(R.raw.XZY);
        OutputStream output = getApplicationContext().openFileOutput("xyz.mp3", Context.MODE_PRIVATE);
        byte data[] = new byte[1024];
        long total = 0;
        int count;
        while ((count = input.read(data)) != -1) {
            total += count;
            output.write(data, 0, count);
        }
        output.flush();
        output.close();
        input.close();
    } catch (Exception e) {
    }

当您需要文件时使用此代码:

File k =getApplicationContext().getFileStreamPath("xyz.mp3");