2013-01-21 4 views
0

한 번에 몇 개의 디렉토리를 만들 수 있는지에 대한 안드로이드의 제한이 있습니까? 사실 하위 데이터베이스에 데이터베이스를 저장하려고하기 때문에. 그래서 나는 다음과 같은 코드를 사용했다 ..android에서 디렉토리 만들기

DATABASE_NAME = Environment.getExternalStorageDirectory() + "/AllDatabases/" + comp 
      + "/Balance/" + wy + ".db"; 

내가 처음으로 폴더를 만들 때 코드는 절대적으로 잘 작동 이름 'AllDatabases'& 다음 변수 '완'의 일부 특정 값과 그 안에 하위 폴더 ('lol'라고 말하십시오.)

where comp = lol 

그런 다음 성공적으로 데이터베이스를 생성합니다. 그러나 내가 다시 생성 된 폴더 &을 삭제하면 위의 명령문을 사용하여 직접 빌드하려고 시도합니다. 여기서 내 DATABASE_NAME에 값을 할당하면 강제로 응용 프로그램이 닫힙니다. 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 

이 대안을 피할 수있는 방법을 알려주십시오.

감사합니다. :)

답변

0

하위 폴더를 하나씩 만들고 동시에 만들어야합니다. 예 : 순서대로 하위 폴더의 이름을 포함하는 배열 폴더가있는 경우

File cnxDir = Environment.getExternalStorageDirectory(); 

    for (String folder : folders) { 

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

     } 

    }