本文共 1617 字,大约阅读时间需要 5 分钟。
加载外部文件的几种常见做法: 1. 放在assets目录下 InputStream is = am.open("address.db"); 不会对该文件生成id 2. 放在res目录下的raw目录下. InputStream is =getResources().openRawResource(R.raw.address); 编译这个文件生成id 3. javase做法 InputStream is = getClassLoader().getResourceAsStream("address.db"); 4. 联网下载. 地图应用. 高德导航. 1G 10G mp3学英语 游戏应用的素材资源 联网下载 -----------------------------------------------------------------------------
2.在splashActivity创建时判断系统目录下是否有该文件,如果没有则复制到系统目录下 public class ToastUtils { public static void showToastInThread( final Activity context, final String msg){ context.runOnUiThread( new Runnable() { Toast. makeText(context, msg, 0).show(); --------------------------------------------------------- 2.在splashActivity创建时判断系统目录下是否有该文件,如果没有则复制到系统目录下 private void copyAddressDb() { File file= new File(getFilesDir(), "address.db" ); if (file.exists()&&file.length()>0){ //得到assets目录下address.db对应输入流 AssetManager am = getAssets(); InputStream is = am.open( "address.db" ); File file= new File(getFilesDir(), "address.db" ); FileOutputStream fos= new FileOutputStream(file); byte [] buffer= new byte [1024]; while ((len=is.read(buffer))!=-1){ fos.write(buffer, 0,len); ToastUtils. showToastInThread(SplashActivity. this , "拷贝数据库成功..." ); } catch (IOException e) { ToastUtils. showToastInThread(SplashActivity. this , "拷贝数据库失败..." );