在android中创建目录

在android中创建目录,android,Android,在android中,一次可以创建多少个目录有什么限制吗? 因为我实际上是想把我的数据库保存在子目录中。所以我使用了下面的代码 DATABASE_NAME = Environment.getExternalStorageDirectory() + "/AllDatabases/" + comp + "/Balance/" + wy + ".db"; 当我首先创建一个名为“AllDatabases”的文件夹,然后在其中创建一个子文件夹,并使用变量“comp”(比如“lol”

在android中,一次可以创建多少个目录有什么限制吗? 因为我实际上是想把我的数据库保存在子目录中。所以我使用了下面的代码

DATABASE_NAME = Environment.getExternalStorageDirectory() + "/AllDatabases/" + comp
            + "/Balance/" + wy + ".db";
当我首先创建一个名为“AllDatabases”的文件夹,然后在其中创建一个子文件夹,并使用变量“comp”(比如“lol”)的某个特定值时,代码工作得非常好

然后,它成功地在其中创建了数据库。但是,当我再次删除创建的文件夹时&直接尝试使用上面的语句构建它,其中我为我的数据库名称分配了一些值,它会强制关闭我的应用程序。这是LogCat显示的

01-21 18:03:30.194: E/Database(19098): sqlite3_open_v2("/mnt/sdcard/lol/MyLedgers/2012-2013.db", &handle, 6, NULL) failed
01-21 18:03:30.254: E/SQLiteOpenHelper(19098): Couldn't open /mnt/sdcard/lol/MyLedgers/2012-2013.db for writing (will try read-only):
01-21 18:03:30.254: E/SQLiteOpenHelper(19098): android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1921)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:960)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:953)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:548)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.balance.start.LedgerInfoDB.opentoread(LedgerInfoDB.java:78)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.balance.start.MainView.onCreate(MainView.java:101)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at java.lang.reflect.Method.invokeNative(Native Method)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at dalvik.system.NativeStart.main(Native Method)
01-21 18:03:30.254: E/Database(19098): sqlite3_open_v2("/mnt/sdcard/chomu/MyLedgers/2012-2013.db", &handle, 1, NULL) failed
01-21 18:03:30.264: W/dalvikvm(19098): threadid=1: thread exiting with uncaught exception (group=0x400207d8)
01-21 18:03:30.264: E/AndroidRuntime(19098): FATAL EXCEPTION: main
01-21 18:03:30.264: E/AndroidRuntime(19098): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.balance.start/com.balance.start.MainView}: android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at java.lang.reflect.Method.invokeNative(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at dalvik.system.NativeStart.main(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098): Caused by: android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1921)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.balance.start.LedgerInfoDB.opentoread(LedgerInfoDB.java:78)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.balance.start.MainView.onCreate(MainView.java:101)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
01-21 18:03:30.264: E/AndroidRuntime(19098):    ... 11 more
01-21 18:03:30.194:E/数据库(19098):sqlite3_open_v2(“/mnt/sdcard/lol/MyLedgers/2012-2013.db”,&handle,6,NULL)失败
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):无法打开/mnt/sdcard/lol/MyLedgers/2012-2013.db进行写入(将尝试只读):
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):android.database.sqlite.SQLiteException:无法打开数据库文件
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):在android.database.sqlite.SQLiteDatabase.dbopen(本机方法)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1921)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:960)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:953)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:548)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteOpenHelper.getwriteabledatabase(SQLiteOpenHelper.java:98)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于com.balance.start.LedgerInfoDB.opentoread(LedgerInfoDB.java:78)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于com.balance.start.MainView.onCreate(MainView.java:101)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):在android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于java.lang.reflect.Method.invokenactive(本机方法)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.254:E/SQLiteOpenHelper(19098):在dalvik.system.NativeStart.main(本机方法)
01-21 18:03:30.254:E/数据库(19098):sqlite3_open_v2(“/mnt/sdcard/chomu/MyLedgers/2012-2013.db”,&handle,1,NULL)失败
01-21 18:03:30.264:W/dalvikvm(19098):threadid=1:线程以未捕获异常退出(组=0x400207d8)
01-21 18:03:30.264:E/AndroidRuntime(19098):致命异常:主
01-21 18:03:30.264:E/AndroidRuntime(19098):java.lang.RuntimeException:无法启动活动组件信息{com.balance.start/com.balance.start.MainView}:android.database.sqlite.SQLiteException:无法打开数据库文件
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.os.Handler.dispatchMessage(Handler.java:99)上
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.264:E/AndroidRuntime(19098):在android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.264:E/AndroidRuntime(19098):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-21 18:03:30.264:E/AndroidRuntime(19098):位于java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.264:E/AndroidRuntime(19098):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.264:E/AndroidRuntime(19098):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.264:E/AndroidRuntime(19098):在dalvik.system.NativeStart.main(本机方法)
01-21 18:03:30.264:E/AndroidRuntime(19098):原因:android.database.sqlite.sqlite异常:无法打开数据库文件
01-21 18:03:30.264:E/AndroidRuntime(19098):位于android.database.sqlite.SQLiteDatabase.dbopen(本机M
01-21 18:03:30.194: E/Database(19098): sqlite3_open_v2("/mnt/sdcard/lol/MyLedgers/2012-2013.db", &handle, 6, NULL) failed
01-21 18:03:30.254: E/SQLiteOpenHelper(19098): Couldn't open /mnt/sdcard/lol/MyLedgers/2012-2013.db for writing (will try read-only):
01-21 18:03:30.254: E/SQLiteOpenHelper(19098): android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1921)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:960)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:953)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:548)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.balance.start.LedgerInfoDB.opentoread(LedgerInfoDB.java:78)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.balance.start.MainView.onCreate(MainView.java:101)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at java.lang.reflect.Method.invokeNative(Native Method)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.254: E/SQLiteOpenHelper(19098):  at dalvik.system.NativeStart.main(Native Method)
01-21 18:03:30.254: E/Database(19098): sqlite3_open_v2("/mnt/sdcard/chomu/MyLedgers/2012-2013.db", &handle, 1, NULL) failed
01-21 18:03:30.264: W/dalvikvm(19098): threadid=1: thread exiting with uncaught exception (group=0x400207d8)
01-21 18:03:30.264: E/AndroidRuntime(19098): FATAL EXCEPTION: main
01-21 18:03:30.264: E/AndroidRuntime(19098): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.balance.start/com.balance.start.MainView}: android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.access$2300(ActivityThread.java:126)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.os.Looper.loop(Looper.java:123)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.main(ActivityThread.java:4633)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at java.lang.reflect.Method.invokeNative(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at java.lang.reflect.Method.invoke(Method.java:521)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at dalvik.system.NativeStart.main(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098): Caused by: android.database.sqlite.SQLiteException: unable to open database file
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1921)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.balance.start.LedgerInfoDB.opentoread(LedgerInfoDB.java:78)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at com.balance.start.MainView.onCreate(MainView.java:101)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-21 18:03:30.264: E/AndroidRuntime(19098):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
01-21 18:03:30.264: E/AndroidRuntime(19098):    ... 11 more
File cnxDir = Environment.getExternalStorageDirectory();

    for (String folder : folders) {

        cnxDir = new File(cnxDir.toString() + File.separator + folder);
        if (!cnxDir.exists()) {
            cnxDir.mkdir();

        }

    }