java - 如何从应用程序检索数据库备份?

标签 java android eclipse sqlite ddms

我试图将我的应用程序数据库从存储数据复制到任何外部文件 但我遇到了一些错误。

我的设备已获得 root 权限,我使用了 google play 中的许多应用程序来导航到数据/数据,但它是空的,我使用了以下代码:

 public void backup() {
        try {
            File sdcard = Environment.getRootDirectory();
            File outputFile = new File(sdcard,
                    "YourDatabase.db");

            if (!outputFile.exists()) 
                 outputFile.createNewFile(); 

            File data = Environment.getDataDirectory();
            File inputFile = new File(data,
                    "data/"+LoginActivity.this.getPackageName()+"/databases/"+"HafilTC.db");
            InputStream input = new FileInputStream(inputFile);
            OutputStream output = new FileOutputStream(outputFile);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = input.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
            output.flush();
            output.close();
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
            throw new Error(e.toString());
        }

安卓主程序:

     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

错误日志:

02-11 18:38:16.213: E/AndroidRuntime(21338): java.lang.Error: java.io.IOException: open failed: EROFS (Read-only file system)

最佳答案

问题是 Environment.getRootDirectory() 没有返回 SD 卡的根目录。它返回您无法写入的根操作系统目录。

您应该改用 Environment.getExternalStorageDirectory() , 这将返回用户外部存储目录的根目录(可能是也可能不是 SD 卡,具体取决于设备)。

关于java - 如何从应用程序检索数据库备份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707923/

相关文章:

java - Android更改目标sdk

Android Material Design 应用兼容性

java - 如何将 Eclipse 项目的 "Java Build Path"部分中引用的 jar 包含在使用 build.xml 文件通过 Ant 生成的 jar 文件中

java - Eclipse PMD 找不到 basic.xml

Java编译平台文件编码问题

java - 如何为安全的 go grpc 服务创建不安全的 Java grpc 客户端

android - 如何在android中使用CSS和Html?

android - SearchView 不显示查询提示文本

java - eclipse RCP : Check for Native Library

java - 从另一个表填充 SQL 表列