通过assets像安卓程序目录中导入数据库文件出现错误的解决办法

错误提示如下,下面的错误信息

08-13 07:36:31.396: W/System.err(9814): java.io.IOException

08-13 07:36:31.416: W/System.err(9814): 
at android.content.res.AssetManager.readAsset(Native Method)

08-13 07:36:31.416: W/System.err(9814):  at android.content.res.AssetManager.access$700(AssetManager.java:36)

08-13 07:36:31.426: W/System.err(9814):  at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:571)

08-13 07:36:31.426: W/System.err(9814):  at com.wzw.mobilesafe.SplashActivity.copyDB(SplashActivity.java:96)

08-13 07:36:31.426: W/System.err(9814):  at com.wzw.mobilesafe.SplashActivity.onCreate(SplashActivity.java:63)

08-13 07:36:31.426: W/System.err(9814):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

08-13 07:36:31.436: W/System.err(9814):  at android.os.Handler.dispatchMessage(Handler.java:99)

08-13 07:36:31.436: W/System.err(9814):  at android.os.Looper.loop(Looper.java:123)

08-13 07:36:31.436: W/System.err(9814):  at android.app.ActivityThread.main(ActivityThread.java:4627)

08-13 07:36:31.436: W/System.err(9814):  at java.lang.reflect.Method.invokeNative(Native Method)

08-13 07:36:31.436: W/System.err(9814):  at java.lang.reflect.Method.invoke(Method.java:521)

08-13 07:36:31.446: W/System.err(9814):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

08-13 07:36:31.446: W/System.err(9814):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

08-13 07:36:31.446: W/System.err(9814):  at dalvik.system.NativeStart.main(Native Method)

08-13 07:36:31.446: I/System.out(9814): 异常了

看下我们的主要代码

			File file=new File(getFilesDir(), "address.db");
			InputStream is= getAssets().open("address.db");
			FileOutputStream fos=new FileOutputStream(file);
			byte buffer[]=new byte[1024];
			int len=0;
			while((len=is.read(buffer))>0){
				fos.write(buffer, 0, len);
			}
			fos.flush();
			is.close();
			fos.close();

解决办法:

把assets目录下的文件改后缀名,如mp3.就可以解决了。。

遇见这样的问题比较奇葩

好像数据库文件大小有限制。

08-13 07:36:31.396: W/System.err(9814): java.io.IOException

08-13 07:36:31.416: W/System.err(9814): 
at android.content.res.AssetManager.readAsset(Native Method)

08-13 07:36:31.416: W/System.err(9814):  at android.content.res.AssetManager.access$700(AssetManager.java:36)

08-13 07:36:31.426: W/System.err(9814):  at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:571)

08-13 07:36:31.426: W/System.err(9814):  at com.wzw.mobilesafe.SplashActivity.copyDB(SplashActivity.java:96)

08-13 07:36:31.426: W/System.err(9814):  at com.wzw.mobilesafe.SplashActivity.onCreate(SplashActivity.java:63)

08-13 07:36:31.426: W/System.err(9814):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)

08-13 07:36:31.426: W/System.err(9814):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

08-13 07:36:31.436: W/System.err(9814):  at android.os.Handler.dispatchMessage(Handler.java:99)

08-13 07:36:31.436: W/System.err(9814):  at android.os.Looper.loop(Looper.java:123)

08-13 07:36:31.436: W/System.err(9814):  at android.app.ActivityThread.main(ActivityThread.java:4627)

08-13 07:36:31.436: W/System.err(9814):  at java.lang.reflect.Method.invokeNative(Native Method)

08-13 07:36:31.436: W/System.err(9814):  at java.lang.reflect.Method.invoke(Method.java:521)

08-13 07:36:31.446: W/System.err(9814):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

08-13 07:36:31.446: W/System.err(9814):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

08-13 07:36:31.446: W/System.err(9814):  at dalvik.system.NativeStart.main(Native Method)

08-13 07:36:31.446: I/System.out(9814): 异常了

通过assets像安卓程序目录中导入数据库文件出现错误的解决办法

时间: 2024-12-27 16:24:21

通过assets像安卓程序目录中导入数据库文件出现错误的解决办法的相关文章

如何将打开res/raw目录中的数据库文件?

在Android中不能直接打开res /raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中, 然后再打开该数据库文件. 复制的基本方法是使用getResources().openRawResource方法获得res/raw目录中资源的 InputStream对象, 然后将该InputStream对象中的数据写入其他的目录中相应文件中. 在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目

eclipse中的js文件报错的解决办法

在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1. Eclipse代码   右键点击项目->properties->Validation->Errors/Warming 将Enable Javascript Sematic validation前面的钩子去掉 2.打开.project 文件下面代码去掉 Eclipse代码   <buildCommand> <name>org.eclipse

mysql导入数据库文件最大限制更改解决方法

错误提示:您可能正在上传很大的文件,请参考文档来寻找解决方法. 解决方法: 检查php.ini 配置文件中的以下三个地方,upload_max_filesize, memory_limit 和post_max_size,并且推荐修改的值要稍大于导入的巨大sql数据库文件:依照这个提示,修改后,重启了php环境,OK

初学微信小程序开发—文件解析错误的解决办法

今天是我学习小程序第二天,当我正在调试新增页面时,发现这个错误: 提示为:文件解析错误  SyntaxError: Unexpected end of JSON input 一开始以为我用错标点符号之类的错误,后来百度发现,是因为这里面空的 解决办法非常简单,看图中步骤:找到即将跳转的路径,然后在左侧找到对应的文件(以本案例为例,找到weekly.json) 补上一个大括号就行了,也就是即将跳转的.json文件不能为空 第一次写博客,很新奇 原文地址:https://www.cnblogs.co

在eclipse中导入jquery包后报错的解决办法

eclipse导入jquery包后报错,处理步骤如下:  1.关闭Eclipse,打开对应项目的.project文件,去掉如下内容:         org.eclipse.wst.jsdt.core.javascriptValidator       2.删除项目中原来的jquery支持包,重启重新复制一份,因为原来的文件已被eclipse项目标记为错误了,之后报错解决.

MAC上IDEA 导入项目出现\65279错误的解决办法

利用 :args 和 :argdo 命令: 用vim批量修改文件夹下面的所有文件,将UTF-8编码的bomb标志去掉,比如在 /src/main,那么先进入到src同级的目录,然后打开vim. 1,输入:vi 2,:args ./src/**  这里用** 表示循环文件夹 3,:ar  可以查看目前添加了那些目标文件 4,:argdo set nobomb |update!  对args列表中的文件分别执行 set nobomb 然后强制保存 这样就把所有文件的BOM头都去掉了    具体关于

关于添加非系统framework后,import导入头文件时没有提示的解决办法

##1.选择target(就是左边你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths(如图所示: ##2.双击后面的空白区域:(如图所示:) ##3.点击“+”号添加一项:并且输入:“$(SRCROOT)/framework文件路径/XXXXX.framework/Headers”(没有引号,Headers为存放.h头文件的文件夹),在确定后会自动变成:工程路径/framework文件路径/XXXXX.f

数据库导入提示USING BTREE 错误的解决办法

用phpmyadmin导入数据提示USING BTREE 错误,原因是mysql不兼容,因为mysql 5.14版本之前不认识 USING BTREE,sql执行到这一段就进行不下去了.解决方法如下,打开sql文件找到如下代码段 CREATETABLE `dede_purview` (       `mid` mediumint(8) DEFAULT'0',       `typeid` smallint(5) DEFAULT'0',       `rank` smallint(6) DEFAU

在swift工程调用第三方库,Bridging导入头文件提示not found解决办法

swift语言简洁,上手之后感觉还不错,今天在使用swift调用cocoapods的AFNetworking时候总是提示“'AFNetworking/AFNetworking.h' file not found”,stackOverflow上面查了查没有发现最终解决办法,最后吃午饭回来,想是不是不应该在Project层次修改Bridging的路径,于是选中Objective-C Bridging Header然后Delete,再选中下面一行的Traget里的Objective-C Bridgin