当前位置: 首页 > 面试题库 >

Android的Resources.openRawResource()问题

鲁望
2023-03-14
问题内容

我的文件res/raw/夹中有一个数据库文件。我Resources.openRawResource()
使用文件名as进行调用,R.raw.FileName并得到一个输入流,但是设备中还有另一个数据库文件,因此要将该db的内容复制到我使用的设备db中:

 BufferedInputStream bi = new BufferedInputStream(is);

和FileOutputStream,但是我得到一个例外,即数据库文件已损坏。我该如何进行?我尝试使用FileFileInputStream和作为路径读取文件/res/raw/fileName,但这也行不通。


问题答案:

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

基于API演示中的示例代码(content / ReadAsset),您应该能够使用以下代码段的变体来读取db文件数据。

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,0,1024))>=0){
  outputStream.write(buffer,0,size);
}
ins.close();
buffer=outputStream.toByteArray();

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

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


 类似资料:
  • 我做了一个android应用程序的代码维护,其他人在android Studio中写的。 当我尝试将project与Gradle文件同步时,我会收到以下错误消息: 并尝试将project与Gradle文件同步,我得到以下错误消息:

  • 从昨天开始,我已经开始与Android Studio的工作。我的问题是当我做我的布局。我有下一个错误(观看屏幕截图了解更多信息): 渲染问题:此版本的渲染库比您的Android Studio版本更新。请更新Android Studio 如果我检查更新,他会说我已经有了最新版本的Android studio,所以我无法更新。 我也在SDK管理器中安装了一些东西,请看下面的截图。 有人能帮我解决这个问

  • 就在今天,我下载了eclipse,并为android开发设置了它。当创建一个新的android项目时,它会创建一个被主项目引用的appcompat_v7库项目。问题是两者都显示错误。我甚至试图从问题列表中删除错误,但这没有帮助。引发了运行时错误- 我现在如何使用开发环境。显然,我无法创建新项目。但是年长的工作得很好。提前致谢。 编辑:我正在追加由IDE创建的第一个活动源 -

  • Ubuntu只有在不运行sudo的情况下才会找到ANDROID_HOME。当使用sudo时,它找不到安装。请帮帮忙! administrator@administrator-System:~/ap_ids/app$cordova要求 android的需求检查结果: Java JDK:已安装1.8.0 Android SDK:安装正确 Android目标:已安装Android-29,Android-

  • 这是我正在使用的库:https://github.com/clickntap/vimeo 我正在尝试使用图书馆的一个Android应用程序。我的测试设备是Kitkat(4.4.4)。 下面是我添加库的方法: 但在上收到以下错误: 和警告: 下面是第二个场景,其中包含:

  • 我知道围绕这个话题有100个问题/答案,但似乎没有一个能给我答案。我知道我的一些问题(如果不是全部的话)与我对gradle缺乏总体理解有关。但是,我希望能得到一些帮助。 我的项目在我的桌面上运行得很好。我这周要去旅行,想在笔记本电脑上做一些工作。我有所有的文件,两台机器上都有相同版本的Android Studio。在打开我的项目时,我不断地遇到各种各样的gradle错误。我想在这一点上我已经进行了