Android中如何把手机sd存储目录里的xx.db数据库用代码复制到 ,Android内存存储的databest下

请问Android中如何把手机sd存储目录里的

img

xx.db数据库用代码复制到 ,Android内存存储的databest下

img

qq:1255295220 希望指导下谢谢!

第一种方式。将已经存在的db,拷贝到sd卡指定目录。如果是包名下路径,不需要权限,非包名下需要申请读写权限

img

第二种方式。
数据迁移,读取已经存在的数据,迁移到新的数据库中

如果是其他路径

       val inputstream= FileInputStream(File("这里指定SD路径(需要申请读写权限)"))
            val newFile =
                File(cacheDir,"test.db")
            val fos = FileOutputStream(newFile)
            var len = -1
            val buffer = ByteArray(1024)
            while (inputstream.read(buffer).also { len = it } != -1) {
                fos.write(buffer, 0, len)
            }
            fos.close()
            inputstream.close()

题主参考下下面链接
https://b23.tv/LHvJNxJ

参考一下

Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上_LingXiaokai的博客-CSDN博客_adb pull sdcard koolpos db koolpos_db http://www.cnblogs.com/liqw/p/5138774.html先说一下adb命令配置,如果遇到adb不是内部或外部命令,也不是可运行的程序或批量文件。配置下环境变量1、adb不是内部或外部命令,也不是可运行的程序或批量文件。解决办法:在我的电脑-属性-高级计算机配置-环境变量,系统变量找到path,把sdk的platform-tools添加进去就可 https://blog.csdn.net/sinat_31500569/article/details/68238058?ops_request_misc=&request_id=&biz_id=102&utm_term=Android%E4%B8%AD%E5%A6%82%E4%BD%95%E6%8A%8A%E6%89%8B%E6%9C%BAsd%E5%AD%98%E5%82%A8%E7%9B%AE%E5%BD%95%E9%87%8C%E7%9A%84xx.db%E6%95%B0%E6%8D%AE%E5%BA%93%E7%94%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-1-68238058.nonecase&spm=1018.2226.3001.4450

如果是用代码实现,即正常的 文件流复制。
请参考以下工具类,将 源文件目标目录 互换下,即可实现复制。
注意:APP需要 申请读写授权


关于Android开发中SD卡使用,复制asset目录的文件到SD卡下工具类
https://blog.csdn.net/djp13276475747/article/details/88617522

数据库转换,希望对你有帮助https://blog.csdn.net/u012729481/article/details/18004869

可以先复制到电脑桌面,然后在你图中红框位置右键,点击Upload,弹窗里选择这个电脑桌面这个db文件,就复制进去了

Java正常的流操作就行,和复制一个图片没区别,操作前一定要在xml中声明对源文件夹和目的文件夹的读写权限

 /**
     * 复制单个文件
     *
     * @param oldPath$Name String 原文件路径+文件名 如:data/user/0/com.test/files/abc.txt
     * @param newPath$Name String 复制后路径+文件名 如:data/user/0/com.test/cache/abc.txt
     * @return <code>true</code> if and only if the file was copied;
     *         <code>false</code> otherwise
     */
    public boolean copyFile(String oldPath$Name, String newPath$Name) {
        try {
            File oldFile = new File(oldPath$Name);
            if (!oldFile.exists()) {
                Log.e("--Method--", "copyFile:  oldFile not exist.");
                return false;
            } else if (!oldFile.isFile()) {
                Log.e("--Method--", "copyFile:  oldFile not file.");
                return false;
            } else if (!oldFile.canRead()) {
                Log.e("--Method--", "copyFile:  oldFile cannot read.");
                return false;
            }
 
            /* 如果不需要打log,可以使用下面的语句
            if (!oldFile.exists() || !oldFile.isFile() || !oldFile.canRead()) {
                return false;
            }
            */
 
            FileInputStream fileInputStream = new FileInputStream(oldPath$Name);
            FileOutputStream fileOutputStream = new FileOutputStream(newPath$Name);
            byte[] buffer = new byte[1024];
            int byteRead;
            while (-1 != (byteRead = fileInputStream.read(buffer))) {
                fileOutputStream.write(buffer, 0, byteRead);
            }
            fileInputStream.close();
            fileOutputStream.flush();
            fileOutputStream.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }