1

この方法を使用してdbファイルをsdcarにコピーしています。sdcardのファイルがすでに存在するかどうか、それが置き換えられるかどうかを教えてください。

public boolean copyDbToSDCard() {
        boolean success = false;
        String SDCardPath = Environment.getExternalStorageDirectory()
                .getAbsolutePath();
        final String DBPATH = SDCardPath + "/BD/";
        final String DBNAME = "Mydb3.db";
        this.getReadableDatabase();
        File directory = new File(DBPATH);
        if (!directory.exists())
            directory.mkdir();
        close();

        try {
            InputStream mInput = new FileInputStream(DB_PATH + DB_NAME);
            OutputStream mOutput = new FileOutputStream(DBPATH + DBNAME);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = mInput.read(buffer)) > 0) {
                mOutput.write(buffer, 0, length);
            }
            mOutput.flush();
            mOutput.close();
            mInput.close();
            success = true;
        } catch (Exception e) {
            Toast.makeText(myContext,
                    "copyDbToSDCard Error : " + e.getMessage(),
                    Toast.LENGTH_SHORT).show();
            e.fillInStackTrace();
        }
        return success;
    }
4

2 に答える 2

1

データベースが利用可能かどうかを確認できますか?

このような

checkDB()
{
try{
      SQLiteDatabase   dbe = SQLiteDatabase.openDatabase("selectedFilePath", null,0);
        Log.d("opendb","EXIST");
        dbe.close();
         // DB exits then delete
        File file = new File(selectedFilePath);
        boolean deleted = file.delete(); <--- this will help you to delete DB

    }
    catch(Exception e)
    {
         // DB not exits code to copy database
    }
 }
于 2012-06-04T11:40:06.627 に答える
1

コード:

OutputStream mOutput = new FileOutputStream(DBPATH + DBNAME);

mOutput.write(buffer, 0, length);

ファイルが存在する場合は、ファイルの内容が新しいデータに置き換えられます。

于 2012-06-04T11:43:51.693 に答える