读取android raw文件夹中数据库文件出现空指针错误
读取android raw文件夹中数据库文件出现空指针异常
想做一个字典
按这个方法做的
http://www.cnblogs.com/nokiaguy/archive/2010/07/31/1789218.html
但执行到InputStream is = getResources().openRawResource(R.raw.dictionary);就会直接跳到异常处理
异常为空指针异常
已添加
------解决方案--------------------
是getResources()为空,也就是context为空,是context的问题,你要看看你代码的上下文。
想做一个字典
按这个方法做的
http://www.cnblogs.com/nokiaguy/archive/2010/07/31/1789218.html
- Java code
private SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/dictionary目录中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { // 获得封装dictionary.db文件的InputStream对象 InputStream is = getResources().openRawResource(R.raw.dictionary); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( databaseFilename, null); return database; } catch (Exception e) { } return null; }
但执行到InputStream is = getResources().openRawResource(R.raw.dictionary);就会直接跳到异常处理
异常为空指针异常
已添加
- XML code
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" > </uses-permission>
------解决方案--------------------
是getResources()为空,也就是context为空,是context的问题,你要看看你代码的上下文。