繁体   English   中英

在Android中备份/还原到SD卡

[英]Backup/Restore to sdcard in Android

我正在尝试将我的应用程序数据库从“首选项”活动备份/恢复到外部sdCard。 我能够将数据库保存到外部sdCard,但是现在我不明白如何将这个文件传输回他的默认路径(data \\ package.app \\ databases)。 任何想法?

我这样做是这样的:

出口:

InputStream myInput;
            String dbpath = "/data/"+pckgname+"/databases/refuel_db";
            String sdpath = Environment.getExternalStorageDirectory().getPath();

            try {

                myInput = new FileInputStream(Environment.getDataDirectory()
                        + dbpath);


                // Set the output folder on the Scard
                File directory = new File(sdpath + "/Refuel");
                // Create the folder if it doesn't exist:
                if (!directory.exists()) {
                    directory.mkdirs();
                }
                // Set the output file stream up:

                OutputStream myOutput = new FileOutputStream(directory.getPath()
                        + "/refuel_db");

                // Transfer bytes from the input file to the output file
                byte[] buffer = new byte[1024];
                int length;
                while ((length = myInput.read(buffer)) > 0) {
                    myOutput.write(buffer, 0, length);
                }
                // Close and clear the streams

                myOutput.flush();

                myOutput.close();

                myInput.close();

                Toast.makeText(getActivity(), "Backup Done Succesfully!", Toast.LENGTH_LONG)
                        .show();

            } catch (FileNotFoundException e) {
                Toast.makeText(getActivity(), "ERROR " + e, Toast.LENGTH_LONG).show();

                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                Toast.makeText(getActivity(), "ERROR " + e, Toast.LENGTH_LONG).show();

                // TODO Auto-generated catch block
                e.printStackTrace();
            }

进口:

 OutputStream myOutput;

            String dbpath = "/data/"+pckgname+"/databases/refuel_db";
            String sdpath = Environment.getExternalStorageDirectory().getPath();

            try {

                myOutput = new FileOutputStream(Environment.getDataDirectory()
                        + dbpath);

                // Set the folder on the SDcard
                File directory = new File(sdpath + "/Refuel");
                // Set the input file stream up:

                InputStream myInputs = new FileInputStream(directory.getPath()
                        + "/refuel_db");

                // Transfer bytes from the input file to the output file
                byte[] buffer = new byte[1024];
                int length;
                while ((length = myInputs.read(buffer)) > 0) {
                    myOutput.write(buffer, 0, length);
                }

                // Close and clear the streams
                myOutput.flush();

                myOutput.close();

                myInputs.close();

                Toast.makeText(getActivity(), "Import Done Succesfully!", Toast.LENGTH_LONG)
                        .show();

            } catch (FileNotFoundException e) {
                Toast.makeText(getActivity(), "ERROR " + e, Toast.LENGTH_LONG).show();

                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                Toast.makeText(getActivity(), "ERROR " + e, Toast.LENGTH_LONG).show();

                // TODO Auto-generated catch block
                e.printStackTrace();
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM