我有一个数据库文件在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();