Save Database on SD Card Backup DB on SD
suggest changepublic static Boolean ExportDB(String DATABASE_NAME , String packageName , String folderName){ //DATABASE_NAME including ".db" at the end like "mayApp.db" String DBName = DATABASE_NAME.substring(0, DATABASE_NAME.length() - 3); File data = Environment.getDataDirectory(); FileChannel source=null; FileChannel destination=null; String currentDBPath = "/data/"+ packageName +"/databases/"+DATABASE_NAME; // getting app db path File sd = Environment.getExternalStorageDirectory(); // getting phone SD card path String backupPath = sd.getAbsolutePath() + folderName; // if you want to set backup in specific folder name /* be careful , foldername must initial like this : "/myFolder" . dont forget "/" at begin of folder name you could define foldername like this : "/myOutterFolder/MyInnerFolder" and so on ... */ File dir = new File(backupPath); if(!dir.exists()) // if there was no folder at this path , it create it . { dir.mkdirs(); } DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); Date date = new Date(); /* use date including file name for arrange them and preventing to make file with the same*/ File currentDB = new File(data, currentDBPath); File backupDB = new File(backupPath, DBName +"("+ dateFormat.format(date)+").db"); try { if (currentDB.exists() && !backupDB.exists()) { source = new FileInputStream(currentDB).getChannel(); destination = new FileOutputStream(backupDB).getChannel(); destination.transferFrom(source, 0, source.size()); source.close(); destination.close(); return true; } return false; } catch(IOException e) { e.printStackTrace(); return false; } }
call this method this way :
ExportDB(“myDB.db”,“com.example.exam”,“/myFolder”);
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents