我正在尝试将一个xml文件从res / xml文件夹复制到设备存储中,但我真的在努力解决这个问题。
我知道起点是让InputStream
读取xml文件。这可以通过以下方式实现:
InputStream is = getResources().openRawResource(R.xml.xmlfile);
最终输出流将是:
file = new File("xmlfile.xml");
FileOutputStream fileOutputStream = new FileOutputStream(file);
但我真的在努力如何正确,准确地读取和复制初始xml文件中的所有信息。
到目前为止,我已尝试使用各种InputStream
和OutputStream
来读写(DataInputStream
,DataOutputStream
,OutputStreamWriter
等,但是我仍然没有设法正确。生成的xml文件中有一些未知字符(编码问题?)。谁可以帮我这个事?谢谢!
答案 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)
答案 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");