如何从android中的app文件夹中检索文件?

时间:2013-01-11 11:34:53

标签: android

我想通过电子邮件发送我的应用程序的数据库文件。这使我在错误情况下更容易提供帮助。为此,我需要检索我的应用程序的安装文件夹。我如何实现这一点,以便我可以发送我的数据库,这是在这里APP-FOLDER \ databases \ mydb.db

由于

1 个答案:

答案 0 :(得分:0)

希望,您在询问策略或从何处开始这样做。

您可以遵循几种方法,

1)将您的db文件保存到SD卡,然后您可以使用它来发送邮件功能。您可以使用SQLiteDatabase.openOrCreateDatabase(String, SQLiteDatabase.CursorFactory)完成此操作,只需将"/sdcard/yrdatabase.db"作为第一个参数传递。

2)如果您没有将其保存到SD卡,那么只需将您的db文件移动到SD卡。您可以使用以下代码实现此目的。 (即将以下功能绑定到您的按钮或以任何方式从您的应用程序调用它)

public void copyDBToSDCard() {
    try {
        InputStream myInput = new FileInputStream("/data/data/com.yrproject/databases/"+DATABASE_NAME);

        File file = new File(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME);
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                Log.i("TAG","File creation failed for " + file);
            }
        }

        OutputStream myOutput = new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+"/"+DATABASE_NAME);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }

        //Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();
        Log.i("TAG","copied");

    } catch (Exception e) {
        Log.i("TAG","exception="+e);
    }

}

完成访问db文件后,您可以使用邮件功能进一步使用它。