2013-09-30 5 views
11

sdcard ich meine Datenbankdatei durch diesen Code bekommenKopie-Datenbank-Datei in android

File dbFile=getDatabasePath("EdsysEyfsDB.db"); 
       Log.v("database name checking", dbFile.toString()); 

ich diese Datenbankdatei kopieren möchten sdcard so kann ich, dass eine Operation tun. Aber ich kann damit keine Operation machen. Der Code unten verwendet für die Kopie auf SD-Karte

  if (dbFile.exists()) { 
         InputStream inStream = new FileInputStream(dbFile); 
         String file = Environment.getExternalStorageDirectory().getPath() 
          +"/" + "database.db"; 
         Log.d("file name checking in dbFilecondition", file); 
         FileOutputStream fs = new FileOutputStream(file); 
         byte[] buffer = new byte[1444]; 
         while ((byteread = inStream.read(buffer)) != -1) { 
          bytesum += byteread; 
          fs.write(buffer, 0, byteread); 
         } 
         inStream.close(); 
         fs.close(); 
        } 

Aber ich bin nicht in diesen Zustand.Das Datenbank Dateinamen gehe richtig auf LogCat kommen. Ich gebe bereits die Erlaubnis zum Lesen und Schreiben von Dateien.

Antwort

40

Versuchen Sie, diese Hoffnung das Sie

public void exportDatabse(String databaseName) { 
     try { 
      File sd = Environment.getExternalStorageDirectory(); 
      File data = Environment.getDataDirectory(); 

      if (sd.canWrite()) { 
       String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+""; 
       String backupDBPath = "backupname.db"; 
       File currentDB = new File(data, currentDBPath); 
       File backupDB = new File(sd, backupDBPath); 

       if (currentDB.exists()) { 
        FileChannel src = new FileInputStream(currentDB).getChannel(); 
        FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
        dst.transferFrom(src, 0, src.size()); 
        src.close(); 
        dst.close(); 
       } 
      } 
     } catch (Exception e) { 

     } 
    } 

Wie hilft

exportDatabse("YourDBName"); 

HINWEIS nennen:

Denken Sie daran, die Erlaubnis, in den externen Speicher <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />, zu schreiben sonst sd.canWrite() wird falsch sein.

+0

Denken Sie daran, die Berechtigung zum Schreiben in den externen Speicher mit '' '' hinzuzufügen, andernfalls wird '' sd.canWrite() '' falsch sein. – Daniel

Verwandte Themen