انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کپی کردن پایگاه داده از پوشه‌ی assets به data (حافظه‌ی داخلی) (اندروید)

کپی کردن پایگاه داده از پوشه‌ی assets به data (حافظه‌ی داخلی) (اندروید)

#1
با سلام
چگونه می‌توان دیتابیس را از پوشه ی assets به پوشه‌ی /data/data/packagename/databases/ کپی کرد؟ پایگاه داده‌ی من حجمی بالای یک مگابایت دارد. بعد از جستجو در اینترنت هم کد زیر را پیدا کردم اما این کد تنها پوشه‌ی databases را می‌سازد و فایل را کپی نمی‌کند:

کد پی‌اچ‌پی:
public class CopyFile extends Application {
     private static final 
String DB_PATH "/data/data"+getPackageName()+"/databases/";
      private static final 
String DB_NAME "database.db";
     @
Override
        
public void onCreate () {
            
super.onCreate();   
                
copyAssetFolder(getAssets(),DB_NAME
                       
DB_PATH);}

        private static 
boolean copyAssetFolder(AssetManager assetManager,
                
String fromAssetPathString toPath) {
            try {
                
String files assetManager.list(fromAssetPath);
                new 
File(toPath).mkdirs();
                
boolean res true;
                for (
String file files)
                    if (
file.contains("."))
                        
res &= copyAsset(assetManager
                                
fromAssetPath "/" file,
                                
toPath "/" file);
                    else 
                        
res &= copyAssetFolder(assetManager
                                
fromAssetPath "/" file,
                                
toPath "/" file);
                return 
res;
            } catch (
Exception e) {
                
e.printStackTrace();
                return 
false;
            }
        }

        private static 
boolean copyAsset(AssetManager assetManager,
                
String fromAssetPathString toPath) {
            
InputStream in null;
            
OutputStream out null;
            try {
              
in assetManager.open(fromAssetPath);
              new 
File(toPath).createNewFile();
              
out = new FileOutputStream(toPath);
              
copyFile(inout);
              
in.close();
              
in null;
              
out.flush();
              
out.close();
              
out null;
              return 
true;
            } catch(
Exception e) {
                
e.printStackTrace();
                return 
false;
            }
        }

        private static 
void copyFile(InputStream inOutputStream outthrows IOException {
            
byte buffer = new byte[1024];
            
int read;
            while((
read in.read(buffer)) != -1){
              
out.write(buffer0read);
            }
        }

    } 

 کد زیر را نیز به فایل Manifest اضافه کرده ام:

کد پی‌اچ‌پی:
<application 
        android
:name="packagename.CopyFile"
        
android:icon="@drawable/icon" 
        
android:label="@string/app_name" 
        
android:debuggable="true"
پاسخ


پیام‌های این موضوع
کپی کردن پایگاه داده از پوشه‌ی assets به data (حافظه‌ی داخلی) (اندروید) - توسط ramtin2080 - ۱۳۹۴/۰۱/۱۰, ۰۳:۰۲ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان