Android的Resources.openRawResource()问题

我的文件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的Resources.openRawResource()问题 的全部内容, 来源链接: utcz.com/qa/435286.html

回到顶部