2017-08-26 15 views
-2

タイプミスがあるかどうか確認しましたが、まだ動作していません。 私にエラーがあることを私に知らせることさえありませんAndroidスタジオが内部ストレージにDBファイルをコピーしていません

私はそれが間違って与えられた私の内部ストレージパスファイルだと思っていますか?

これは、コピーしたい内部ストレージファイルです。 Path file

これは私がonclickの機能で私のメソッドを呼び出した方法です:

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

     if (sd.canWrite()) { 
      String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+""; 
      String backupDBPath = "//MyDb"; 
      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(); 
      } 
      Toast.makeText(this, "Backup Done!", Toast.LENGTH_SHORT); 
     } 

    } catch (Exception e) { 
     Toast.makeText(this, "Fail!", Toast.LENGTH_SHORT); 
    } 
} 

答えて

1

このメソッドを使用する作業完璧:

else if (view == findViewById(R.id.btnBackup)){ 
     exportDatabase("stock.db"); 

    } 
} 

これは、データベースをエクスポートするための方法です。

public void exportDB(Context mContext) { 
    try { 
     File sd = mContext.getExternalFilesDir("/database/"); 
     File data = Environment.getDataDirectory(); 

     if (sd.canWrite()) { 
      String currentDBPath = "//data//" + PACKAGE_NAME + "//databases//" + DATABASE_NAME; 
      String backupDBPath = DATABASE_NAME; 
      File currentDB = new File(data, currentDBPath); 
      File backupDB = new File(sd, backupDBPath); 

      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) { 
    } 
} 
+0

thx情報のために –

+0

@RickYuzuriha私のansを受け入れてくださいupvote –

関連する問題