0

以下のコードを使用して、データベースファイルをSDカードに移動しようとしています。の下にレッドラインが表示されることを除いて、問題はありませんsd。何か案は?

File data = Environment.getDataDirectory();
if (sd.canWrite()) {
    String currentDBPath = "\\data\\application.package\\databases\\name";
    String backupDBPath = "name";
    File currentDB = new File(data, currentDBPath);
    File backupDB = new File(sd, backupDBPath);
    if (currentDB.exists()) {
        FileChannel src;
    try {
    src = new FileInputStream(currentDB).getChannel();
        FileChannel dst = new FileOutputStream(backupDB).getChannel();
        try {
        dst.transferFrom(src, 0, src.size());
    src.close();
            dst.close();
        } catch (IOException e) {                                                    
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

2 に答える 2

1

変数のインスタンスを作成する場合にのみ、変数を使用できます。

これをコードの前に置きます:

File sd = Environment.getExternalStorageDirectory();
于 2012-11-13T13:26:09.040 に答える
0

SQLiteデータベースを使用している場合は、次のことを試してください。

public class _DBHelper extends SQLiteOpenHelper {

    public boolean backUp() throws Exception
        {
            InputStream input = null;
            OutputStream output = null;

            try {
                SQLiteDatabase db = this.getReadableDatabase();
                String strSource = db.getPath();

                String strDest = Utilities.getAppDocumentsFolder(_context) + "/"
                        + DATABASE_NAME;

                File fileDest = new File(strDest);
                if (fileDest.exists())
                {
                    fileDest.delete();
                }

                input = new FileInputStream(strSource);

                output = new FileOutputStream(strDest);

                byte[] buffer = new byte[1024];
                int length;
                while ((length = input.read(buffer)) > 0) {
                    output.write(buffer, 0, length);
                }
            } catch (Exception e) {
                throw e;
            } finally
            {
                if (output != null)
                {
                    output.flush();
                    output.close();
                }
                if (input != null)
                {
                    input.close();
                }
            }

            return true;
        }
}
于 2012-11-13T13:25:30.370 に答える