Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试将数据库复制到sd卡存储方向时获取未捕获处理程序异常_Java_Android - Fatal编程技术网

Java 尝试将数据库复制到sd卡存储方向时获取未捕获处理程序异常

Java 尝试将数据库复制到sd卡存储方向时获取未捕获处理程序异常,java,android,Java,Android,我试图将我的数据库文件复制到SD卡中。我正在使用这些代码来执行此操作: private static String DB_PATH = Environment.getExternalStorageDirectory().toString()+"/"; private static final String DATABASE_NAME = "story.sql"; private void copyDataBase() throws IOException {

我试图将我的数据库文件复制到SD卡中。我正在使用这些代码来执行此操作:

     private static String DB_PATH = Environment.getExternalStorageDirectory().toString()+"/";
     private static final String DATABASE_NAME = "story.sql";

     private void copyDataBase() throws IOException {

        InputStream myInput = helperContext.getAssets().open(DATABASE_NAME);

        String outFileName = DB_PATH + DATABASE_NAME;

        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }

        myOutput.flush();
        myOutput.close();
        myInput.close();
    }
当我调试代码时,这里抛出异常

while ((length = myInput.read(buffer)) > 0) {
                myOutput.write(buffer, 0, length);
            }

07-26 14:58:10.689: ERROR/AndroidRuntime(7723): Uncaught handler: thread main exiting due to uncaught exception
07-26 14:58:10.709: ERROR/AndroidRuntime(7723): java.lang.Error: Error copying database
07-26 14:58:10.709: ERROR/AndroidRuntime(7723):     at org.android.story.SqliteManager$DatabaseHelper.createDataBase(SqliteManager.java:272)
07-26 14:58:10.709: ERROR/AndroidRuntime(7723):     at org.android.story.SqliteManager.open(SqliteManager.java:62)
07-26 14:58:10.709: ERROR/AndroidRuntime(7723):     at org.android.story.MainMenu.onCreate(MainMenu.java:21)
我在安卓操作系统2.1上试过,结果是一样的。在我试过安卓操作系统2.3.3版本后,它很有魅力。我还试过我的Android手机,它有1.6操作系统版本,数据库更小(我的数据库是9.8MB,改成了320KB大小),它工作得很好。那么,为什么这段代码适用于2.3.3或更小的数据库,而不适用于1.6或2.1呢?在1.6中是否有任何变通方法可供使用

编辑:我编写了这个调用copyDataBase()的函数


您是否具有SD卡的写入权限?错误发生在SQLiteManager类的第272行-您可以复制该代码吗?是的,我复制了。第272行的代码是:
抛出新错误(“复制数据库时出错”)将该行替换为
抛出新错误(例如getMessage())以便我们可以阅读消息。再次发布错误日志。我如您所说进行了更改,消息详细信息返回null:
07-26 16:37:08.799:error/AndroidRuntime(8360):java.lang.error
public void createDataBase() throws IOException {
    boolean dbExist = checkDataBase();


    if (dbExist) {
    } else {

        this.getReadableDatabase();
        try {
            copyDataBase();
        } catch (IOException e) {
            throw new Error("Error copying database");
        }
    }

}