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程序,调用有数据库的那个程序的数据库。发现还是不行,估计是应用之间确实不让调用其他的数据库吧。

小问题,值得思考,睡了!~

posted @ 2013-09-23 01:01  q429786006  阅读(221)  评论(0编辑  收藏  举报