È ansible salvare il file di database sulla scheda SD?

Possibile duplicato:
È ansible copiare il file di database sulla scheda SD?

Ho un database sul mio telefono Android, e ho bisogno di ottenere le informazioni su una scheda SD.

È ansible salvare il file del database sulla scheda SD in uno stato leggibile? Non sono stato in grado di trovare alcuna informazione su come farlo. Conosco il nome del database, i campi ecc …

Ho trovato alcuni esempi che mostrano come salvare su tabs SD, ma non esattamente quello di cui ho bisogno.

Un codice sorgente che copia il file del database su una scheda SD sarebbe perfetto.

    Speriamo che questa domanda sia abbastanza chiara.

    Sì. Ecco la funzione che utilizzo:

    public void copyDBToSDCard() { try { InputStream myInput = new FileInputStream("/data/data/com.myproject/databases/"+DATABASE_NAME); File file = new File(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { Log.i("FO","File creation failed for " + file); } } OutputStream myOutput = new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //Close the streams myOutput.flush(); myOutput.close(); myInput.close(); Log.i("FO","copied"); } catch (Exception e) { Log.i("FO","exception="+e); } } 

    Per un progetto su cui ho lavorato, ho inserito un’opzione di menu nella schermata iniziale che potevo chiamare questa funzione in qualsiasi momento. Quindi, sposterei il database sul desktop e lo aprirò con il plugin SQLite Manager per FireFox.

    Sicuro. Se questo è un database esistente nella tua app, puoi ottenere un riferimento al file db tramite Context.getDatabasePath() , passandogli il nome del database. Da lì, è solo un’operazione di copia di file di routine:

     //Get a reference to the database File dbFile = mContext.getDatabasePath("mydb"); //Get a reference to the directory location for the backup File exportDir = new File(Environment.getExternalStorageDirectory(), "myAppBackups"); if (!exportDir.exists()) { exportDir.mkdirs(); } File backup = new File(exportDir, dbFile.getName()); //Check the required operation String command = params[0]; //Attempt file copy try { backup.createNewFile(); fileCopy(dbFile, backup); } catch (IOException e) { /*Handle File Error*/ } 

    Dove il metodo fileCopy() è definito come:

     private void fileCopy(File source, File dest) throws IOException { FileChannel inChannel = new FileInputStream(source).getChannel(); FileChannel outChannel = new FileOutputStream(dest).getChannel(); try { inChannel.transferTo(0, inChannel.size(), outChannel); } finally { if (inChannel != null) inChannel.close(); if (outChannel != null) outChannel.close(); } } 

    HTH!