Android SQLite代码不';从Mac OSX切换到windows 7后无法工作

Android SQLite代码不';从Mac OSX切换到windows 7后无法工作,android,sqlite,sqliteopenhelper,Android,Sqlite,Sqliteopenhelper,昨晚我在家工作,这对我帮助很大。我让一切都正常工作(注释掉了dbFile exists check,只是复制了我想使用sqlite浏览器对数据库所做的任何更改) 今天早上,我将平板电脑带到一台Windows7机器上,卸载了应用程序,并尝试从eclipse运行相同的代码。我一直收到一个错误: 03-12 11:51:39.320:E/AndroidRuntime(20365):由以下原因引起: java.io.IOException:尝试复制数据库-错误: /data/data/mypackage

昨晚我在家工作,这对我帮助很大。我让一切都正常工作(注释掉了dbFile exists check,只是复制了我想使用sqlite浏览器对数据库所做的任何更改)

今天早上,我将平板电脑带到一台Windows7机器上,卸载了应用程序,并尝试从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的结果都返回为false。正如我在这里输入的一样,它工作得非常完美。我不知道为什么将平板电脑连接到运行与eclipse相同版本的windows机器上会有任何不同

您得到的错误是指定的目录不存在。你显然是在一个新的虚拟设备上运行这个,对吗?android的版本与您最初开发的版本相同吗?

不,这是在实际的平板电脑上-摩托罗拉Xoom android 4.0.3。我在顶部添加了一些代码。-由于某种原因,他不能读或写。我希望我现在在家,这样我可以比较。好吧,我解决了它。我学到的教训是,您需要对数据路径使用Context.getFilesDir,而不是对其进行硬编码。我不知道为什么/data/data/packagename/databases昨晚在工作。我不认为这与在mac和windows上工作有任何关系。非常神秘。