加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Resources.openRawResource()发行Android

发布时间:2020-12-14 05:33:01 所属栏目:Java 来源:网络整理
导读:我有一个数据库文件在res / raw /文件夹.我正在调用Resources.openRawResource(),文件名为R.raw.FileName,我得到一个输入流,但是我在设备中有另一个数据库文件,因此要将该数据库的内容复制到我使用的设备数据库中: BufferedInputStream bi = new BufferedIn
我有一个数据库文件在res / raw /文件夹.我正在调用Resources.openRawResource(),文件名为R.raw.FileName,我得到一个输入流,但是我在设备中有另一个数据库文件,因此要将该数据库的内容复制到我使用的设备数据库中:
BufferedInputStream bi = new BufferedInputStream(is);

和FileOutputStream,但是我收到一个例外,数据库文件已损坏.我该怎么办?
我尝试使用File和FileInputStream读取文件,路径为/ res / raw / fileName,但也不起作用.

解决方法

是的,您应该能够使用openRawResource将二进制文件从原始资源文件夹复制到设备.

根据API演示(内容/ ReadAsset)中的示例代码,您应该可以使用以下代码片段的变体来读取数据库文件数据.

InputStream ins = getResources().openRawResource(R.raw.my_db_file);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
int size = 0;
// Read the entire resource into a local byte buffer.
byte[] buffer = new byte[1024];
while((size=ins.read(buffer,1024))>=0){
  outputStream.write(buffer,size);
}
ins.close();
buffer=outputStream.toByteArray();

您的文件的副本现在应该存在于缓冲区中,因此您可以使用FileOutputStream将缓冲区保存到新文件中.

FileOutputStream fos = new FileOutputStream("mycopy.db");
fos.write(buffer);
fos.close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读