بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
محل انتقال اطلاعات برنامه بعد از نصب
یه سوال پایه ای و شاید مبتدیانه داشتم
می خواستم ببینم وقتی برنامه ای را منتشر می کنیم بخش های مختلف آن به کجا منتقل می شوند و در کجا ذخیره می شوند.
این سوال را بیشتر از این بابت می پرسم که فرض کنید در برنامه یک دیتابیس از پیش تهیه شده داریم که می خواهیم اطلاعات را از روی آن بخوانیم. حالا این دیتا بیس را باید کجای برنامه بذاریم و بعد از نصب باید از کجا بخونیم. و موارد مشابه.
0
0
دیتابیس را باید در پوشه assets بزارید (9 سال پیش)
0
0
همونطور که دوستمون گفتن توی پوشه assets میذارید و کدی می نویسید که دیتابیس رو تا برنامه باز میشه به داخل محل مورد نظر کپی کنه روی حافظه و از اونجا دیتابیس رو لود کنه (9 سال پیش)
+1
0
بله. درسته. (9 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
مجتبی یگانه
9 سال پیش
+4
0
شما می تونید اطلاعات رو در یک پوشه به نام assets قرار بدید (اگر نیست بسازید)
مناسب ترین مکان برای ذخیره پوشه ی دیتای برنامه است ، این همان اطلاعاتی هست که در تنظیمات وقتی روی "پاک کردن داده های برنامه" کلیک می کنیم پاک میشه و مسیری شبیه این داره
SDCard/Android/data/نام پکیچ شما
SDCard/Android/data/ir.negano.App1/db.sqlite
باید این پوشه رو در زمان اجرا بسازید.
اینم نحوه ی کپی از Assets
private boolean copyFromAssets(String FilePath, String Destination) { try { InputStream is = assetManager.open(FilePath); File outpuFile = new File(Destination); if (outpuFile.exists()) { outpuFile.delete(); } OutputStream os = new FileOutputStream(outpuFile); byte[] Buffer = new byte[8 * 1024]; int len = 0; while ((len = is.read(Buffer)) > 0) { os.write(Buffer, 0, len); } is.close(); os.flush(); os.close(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } // نحوه ی فراخوانی // اولی نام یا مسیر فایل در استز و دومی مسیر و نام فایل در آدرس نهایی هست اگه پوشه بندی شده باشه به این شکل میشه // assets/database/db.sqlite => "database/db.sqlite" // مسیر نهایی هم که میشه یه جایی تو sd card // Storage/sdcard0/myAppFolder/db.sqlite if (copyFromAssets("folderInAssets/data.sqlite", App_Path + "data.sqlite")) {
// فایل کپی شده } else { فایل کپی نشده ! }
ممنون از پاسخگویی سریعتون. ولی یه مشکلی وجود داره. در همان مثال دیتا بیس فرض کنید بخواهیم توی این دیتابیس تغییراتی هم در حین کار برنامه اعمال کنیم. اون وقت در پایان کار برنامه مجبوریم آن را روی اس دی کارت باقی بذاریم و در این صورت اگر اطلاعات اس دی کارت پاک شود تغییرات ایجاد شده از دست می رود. اگر بخواهیم این تغییرات را در preference ذخیره کنیم آیا محدودیت حجم وجود دارد؟ البته مرتبط ساختن اطلاعات هم خودش داستانیه. (9 سال پیش)
خیلی قبل تر همین موضوع تو ویندوز مطرح بود. میگفتیم دیتا بیس فایل میگفتن اگه کاربر پاک کرد چی؟ میگفتیم سرور دیتابیس - میگفتن اگه رفت از سرور پاک کرد چی؟ به این نتیجه رسیدیم که بجای پروپزال برنامه یه پروپزال دادیم به کارفرما حدود 200 صفحه در رابطه با تربیت اجتماعی کاربران. اون نامردم دیگه تماس نگرفت - هنوزم نمیدونم چرا! (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .