0

昨晚我让这段代码在家工作,Whatzit 是一个很好的帮助。我让一切正常(注释掉了 dbFile 存在检查,并且只是将我想使用 sqlite 浏览器进行的任何更改复制到数据库中)。

今天早上我把我的平板电脑带到一台 Windows 7 机器上,卸载了应用程序并尝试从 eclipse 运行相同的代码。我不断收到错误消息:

03-12 11:51:39.320:E/AndroidRuntime(20365):原因:java.io.IOException:试图复制数据库 - 错误:/data/data/mypackage/databases/restaurant.db:打开失败:ENOTDIR (不是目录)

我已经在我的mac上压缩了我的项目并将其解压缩到windows机器上eclipse中的同一个项目目录中,并且在eclipse中刚刚执行了刷新。

想知道我可能会尝试什么吗?我尝试卸载该应用程序,将 .apk 复制回来并再次安装,但似乎没有任何效果。谢谢。

*我实际上是在实际设备上运行它 - 摩托罗拉 Xoom 4.0.3

    private void copyDataBase(File dbFile) throws IOException {
    try{
        InputStream dbStream = myDbContext.getAssets().open(dbName);
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canRead());
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canWrite());
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getExternalStorageDirectory());
        Log.e("In copyDataBase", "opened up file " + dbName + " successfully. - trying " + path.toString());
        OutputStream newDbFile = new FileOutputStream(DB_PATH + dbName);

        byte[] buffer = new byte[1024];
        int length;
        while((length = dbStream.read(buffer)) > 0){
            newDbFile.write(buffer);
        }

        newDbFile.flush();
        newDbFile.close();
        dbStream.close();
    }
    catch(IOException e){

        throw new IOException("trying to copy the database - ERROR: " + e.getMessage());
    }   

}

canWrite 和 canRead 的结果都返回为假。正如我在这里打字一样,这是完美无缺的。我不知道为什么将平板电脑连接到运行与 Eclipse 相同版本的 Windows 机器上会有什么不同。

4

1 回答 1

0

你得到的错误是说指定的目录不存在。您显然是在新的虚拟设备上运行它吗?android的版本和你最初开发的版本一样吗?

于 2012-03-12T17:03:16.220 回答