1

我的APP需要root权限来做一些分析,所以我在我的代码中写成

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

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

然后做一些分析。但问题是,源文件名是一样的,如果我使用

“<code>cp -r /data/data/*/webview.db /sdcard/test”

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

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

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

英文不太好,希望你能看懂,谢谢!

4

2 回答 2

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) {
        }
    }
于 2013-03-09T11:10:17.640 回答
0

你可以使用亚行。

一旦你 USB 连接你的设备

你跑:

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

了解您的设备是什么

你跑:

亚行设备

这样做你的桌面上有你的 webview.db 文件,你可以随意使用它

于 2013-03-09T07:03:04.487 回答