Resources.openRawResource()发布Android

Sam*_*562 14 java android

我在res/raw/文件夹中有一个数据库文件.我Resources.openRawResource() 用文件名调用,R.raw.FileName我得到一个输入流,但我在设备中有另一个数据库文件,所以要将该数据库的内容复制到我使用的设备数据库:

 BufferedInputStream bi = new BufferedInputStream(is);
Run Code Online (Sandbox Code Playgroud)

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

Ret*_*ier 39

是的,您应该可以使用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();
Run Code Online (Sandbox Code Playgroud)

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

FileOutputStream fos = new FileOutputStream("mycopy.db");
fos.write(buffer);
fos.close();
Run Code Online (Sandbox Code Playgroud)