ghader62
یک شنبه 06 بهمن 1392, 10:37 صبح
سلام خدمت همه دوستان
من میخوام یک دیتابیس با حجم 6 مگا رو از assets به فولدر databases کپی کنم متد کپی من بصورت زیر میباشد
(permission دسترسی به حافظه رو هم در منیفست وارد کردم)
public static void copyDataBase(String databaseName) throws IOException {
String DB_PATH = ("/data/data/" + gContext.getPackageName() + "/" + "databases/");
InputStream myInput = gContext.getAssets().open(databaseName);
OutputStream myOutput = new FileOutputStream(DB_PATH + databaseName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
که خطای زیرور توی لوگ کت نشون میده
java.io.IOException
at android.content.res.AssetManager.readAsset(Native Method)
at android.content.res.AssetManager.access$700(AssetM anager.java:36)
at android.content.res.AssetManager$AssetInputStream. read(AssetManager.java:571)
at com.ghader.total.G.copyDataBase(G.java:111)
at com.ghader.total.G.onCreate(G.java:40)
at android.app.Instrumentation.callApplicationOnCreat e(Instrumentation.java:969)
at android.app.ActivityThread.handleBindApplication(A ctivityThread.java:4244)
at android.app.ActivityThread.access$3000(ActivityThr ead.java:125)
at android.app.ActivityThread$H.handleMessage(Activit yThread.java:2071)
at android.os.Handler.dispatchMessage(Handler.java:99 )
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.jav a:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:626)
at dalvik.system.NativeStart.main(Native Method)
دقیقا این متد رو برای دیتابیس مشابه و با سایز 7 کیلو آزمایش کردم که درست عمل کرد ولی با سایزهای مگا مشکل پیدا میکنه. در جاهایی دیدم که این متد برای دیتابیس با سایز 50 مگا هم درست کار کرده، ولی نمیدونم چرا اینجا نمیتونم درست جواب بگیرم
ممنون میشم اگه دوستان کمکی بکنند.
من میخوام یک دیتابیس با حجم 6 مگا رو از assets به فولدر databases کپی کنم متد کپی من بصورت زیر میباشد
(permission دسترسی به حافظه رو هم در منیفست وارد کردم)
public static void copyDataBase(String databaseName) throws IOException {
String DB_PATH = ("/data/data/" + gContext.getPackageName() + "/" + "databases/");
InputStream myInput = gContext.getAssets().open(databaseName);
OutputStream myOutput = new FileOutputStream(DB_PATH + databaseName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
که خطای زیرور توی لوگ کت نشون میده
java.io.IOException
at android.content.res.AssetManager.readAsset(Native Method)
at android.content.res.AssetManager.access$700(AssetM anager.java:36)
at android.content.res.AssetManager$AssetInputStream. read(AssetManager.java:571)
at com.ghader.total.G.copyDataBase(G.java:111)
at com.ghader.total.G.onCreate(G.java:40)
at android.app.Instrumentation.callApplicationOnCreat e(Instrumentation.java:969)
at android.app.ActivityThread.handleBindApplication(A ctivityThread.java:4244)
at android.app.ActivityThread.access$3000(ActivityThr ead.java:125)
at android.app.ActivityThread$H.handleMessage(Activit yThread.java:2071)
at android.os.Handler.dispatchMessage(Handler.java:99 )
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.jav a:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:626)
at dalvik.system.NativeStart.main(Native Method)
دقیقا این متد رو برای دیتابیس مشابه و با سایز 7 کیلو آزمایش کردم که درست عمل کرد ولی با سایزهای مگا مشکل پیدا میکنه. در جاهایی دیدم که این متد برای دیتابیس با سایز 50 مگا هم درست کار کرده، ولی نمیدونم چرا اینجا نمیتونم درست جواب بگیرم
ممنون میشم اگه دوستان کمکی بکنند.