如何将/ data / data文件复制到/ sdcard?

时间:2013-03-09 06:22:50

标签: android linux shell

我的APP需要root权限才能进行一些分析,因此我将代码编写为

Runtime.getRuntime().exec("su");”,然后将linux命令或shell脚本写入其中。

我尝试将/data/data/packagename/databases/webview.db文件复制到/ sdcard / test(源数据库文件是我手机中存在的所有应用程序数据文件,虽然java代码我只能获取我的应用程序本身的文件),

然后做一些分析。但麻烦的是,源文件名是相同的,如果我使用

cp -r /data/data/*/webview.db /sdcard/test

目标目录中始终只有一个文件,我不太擅长linux shell

命令,所以我想知道如何复制到目标目录并更改文件名或只是

保留源目录结构,如/sdcard/test/package/webview.db。我是中国人,我是

英语不太好,希望你能理解,谢谢!

2 个答案:

答案 0 :(得分:2)

我正在使用此代码并且它运行良好!

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

            if (sd.canWrite()) {
                String currentDBPath = "//data//" + this.getPackageName()
                        + "//databases//db";
                String backupDBPath = Environment.getExternalStorageDirectory()
                        .toString() + "/Darama1/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) {
        }
    }

答案 1 :(得分:0)

您可以使用adb。

USB连接设备后

你跑:

adb -s YOURDEVICE pull /data/data/packagename/databases/webview.db

知道你的设备是什么

你跑:

adb devices

这样,您可以在桌面上使用webview.db文件,然后根据需要使用它