SQLite Android:自定义数据库目录创建;文件包含路径分隔符

SQLite Android:自定义数据库目录创建;文件包含路径分隔符,android,database,sqlite,Android,Database,Sqlite,在SQLite中,是否可以将数据库文件放在PackageName而不是PackageName/数据库中的单独文件夹中 例如,我将此字符串传递给SQLiteOpenHelper的构造函数: data/data/com.example.app/appbooks/App Book 1.db 还尝试将其作为字符串执行,结果相同: dbName = "data" + File.separator + "data" + File.separator + "com.example.app"

在SQLite中,是否可以将数据库文件放在PackageName而不是PackageName/数据库中的单独文件夹中

例如,我将此字符串传递给SQLiteOpenHelper的构造函数:

    data/data/com.example.app/appbooks/App Book 1.db
还尝试将其作为字符串执行,结果相同:

    dbName = "data" + File.separator + "data" + File.separator + "com.example.app" + File.separator + "appbooks" + File.separator + dbName + ".db";
之后,我在执行时收到logcat中的一个错误,上面的字符串包含路径分隔符。我尝试过使用通常的斜杠,并用File.separator替换这些斜杠,但错误仍然存在

    05-06 21:23:25.896: E/AndroidRuntime(5214): Caused by: java.lang.IllegalArgumentException: File data/data/com.example.app/appbooks/App Book 1.db contains a path separator
数据库必须位于
getDatabasePath()
返回的目录中

如果确实需要数据库文件名的层次结构,请使用任何其他字符替换路径分隔符。(在Linux中,文件名可以包含除
/
之外的任何字符) 如果你想变得特别邪恶,请使用反斜杠:

最后一个字符串myFakeSeparator=“\\”;
...
dbName=…+File.separator+“appbooks”+myFakeSeparator+dbName+“.db”;

是否有理由在其他位置创建数据库?我无法想象这个用例。另外,您不应该使用硬编码的路径-而是使用
Context.getDatabasePath()
。是的,有。我知道这不是一个好的做法,但我只需要知道我是否可以把它放在另一个文件夹中。