我正在尝试使用
android DownloadManager下载文件,访问该文件,并将其写入新的位置(在本例中,我正在下载一个编译服务器端的数据库,需要写入/ database /目录).
我一直在阅读并管理下载该文件,并激活BroadcastReceiver,但在这一点上我被卡住了.
我已经返回了ParcelFileDecriptor文件,但我无法以任何方式将其转换为流.我不能决定ParcelFileDecriptor.AutoCloseInputStream是否是一个红色的鲱鱼,但我很确定ParcelFileDecriptor有一个流的相对性,但我真的很努力地处理它.任何帮助将不胜感激.
解决方法
我在发布后工作了约5分钟,现在觉得很愚蠢.无论如何,假设您已经开始下载并设置了广播报告器,以下代码将执行此工作…
ParcelFileDescriptor file = dMgr.openDownloadedFile(downloadId); File dbFile = getDatabasePath(Roads.DATABASE_NAME); InputStream fileStream = new FileInputStream(file.getFileDescriptor()); OutputStream newDatabase = new FileOutputStream(dbFile); byte[] buffer = new byte[1024]; int length; while((length = fileStream.read(buffer)) > 0) { newDatabase.write(buffer,length); } newDatabase.flush(); fileStream.close(); newDatabase.close();
如果您正在寻找更多关于使用自己的检查覆盖数据库的信息,那么这个链接(以上信息来自大多数):
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/