android关于SD卡上操作的问题
今日有一个项目需要用到Sqlite数据导入导出,打算用Xml实现。搜索之得到如下:http://tech.ddvip.com/2013-01/1358149885188841.html
然后写了一个Demo,用了这么一段代码打开数据库:
String path = Environment.getDataDirectory() + "/data" + "/com.mac.taiyitong/databases" + "/tyt.db"; File file = new File(path); System.out.println(file.exists()); SQLiteDatabase database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
我承认我很懒。就是因为这个原因导致我浪费了3个多小时。
当前应用中并没有数据库,我想到之前的项目里面已经建立好数据库,并且里面就有数据,直接用那就行了。于是我是这去用上面的代码获取数据库。可惜啊,一直报错:
我就很郁闷了,上面的打印为true,那么说明这个文件是存在的,但是为什么打不开数据库。我很郁闷啊。
问题就出在这里了,我以为是读写权限,但是我打断点,发现并没有到文件的读写,而且获取的SQLiteDatabase是空的。我于是拷出来那个数据库,放在手机上用,然后路径用:
File file = new File("sdcard/haha.xml"); System.out.println(file.exists());
惊奇的发现,没有上面的错误了,我意识到可能不能相互调用,然后我用模拟器运行之前的有数据库的程序,里面加上了之前发的那个链接的代码,导出xml。但是发现依旧报了上面的错,我就郁闷了,这是什么原因,最后看了下模拟器的配置,发现没有给分配sdcard的大小,分配上之后,再次启动,成功了!
然后再测试,用第一个Demo程序,调用有数据库的那个程序的数据库。发现还是不行,估计是应用之间确实不让调用其他的数据库吧。
小问题,值得思考,睡了!~