2

エミュレータを使用してSQLiteデータベースをデータフォルダからSDCardにコピーしようとしています。ここで見つけた以下のコードを使用しています。

try {
    File sd = Environment.getExternalStorageDirectory();
    File data = Environment.getDataDirectory();

    if (sd.canWrite()) {
        String currentDBPath = "\\data\\PackageName\\databases\\myDB.db";
        String backupDBPath = "myDB.db";
        File currentDB = new File(data, currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        if (currentDB.exists()) 
        {
           // code to copy from currentDB  to backupDB 
        }
    }
} catch (Exception e) {
}

以下の書き込み許可もマニフェストファイルに追加されます。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

問題

問題は、「currentDB.exists()」がFALSEを返すことです。

「currentDB.getAbsolutePath()」は、「data \ data \ PackageName \ databases\myDB.db」であるパスを返します。

これはデータベースの正しい場所です。Eclipse>>DDMSパースペクティブ>>ファイルエクスプローラーを使用してデータベースを見つけることができるからです。

「currentDB.exists()」がFALSEを返す理由を誰かが見つけるのを手伝ってもらえますか?

貴重な時間とご協力に感謝します。

4

1 に答える 1

0

さて、私はちょうど「.db」拡張子を削除しました、そしてそれは今動作します!以下の更新されたコードを参照してください。

try 
 {
    File sd = Environment.getExternalStorageDirectory();
    File data = Environment.getDataDirectory();

    if (sd.canWrite()) {
        String currentDBPath = "\\data\\PackageName\\databases\\myDB";
        String backupDBPath = "myDB";
        File currentDB = new File(data, currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        if (currentDB.exists()) 
        {
           // code to copy from currentDB  to backupDB 
        }
    }
} catch (Exception e) {
}

myDB.dbは「 myDB 」に置き換えられます。

于 2011-11-16T05:32:29.403 に答える