- 确定 sqlite 数据库所在位置(一般在data/data/com.pagename/databases/ 下,其中 com.pagename为当前项目包名)
- 确定 sqlite 数据库名称,拼接到数据库位置后面(例如:data/data/com.pagename/databases/user.db)
- 指定 SD 卡路径,用于接收 sqlite 文件(例如: Environment.getExternalStorageDirectory() + File.separator +"user.db")
- 实现文件复制方法,执行复制
定义复制参数
private void copyDBToSDcrad() { String DATABASE_NAME = "user.db"; String oldPath = "data/data/com.pagename/databases/" + DATABASE_NAME; String newPath = Environment.getExternalStorageDirectory() + File.separator + DATABASE_NAME; copyFile(oldPath, newPath); }
文件复制方法
/** * 复制单个文件 * * @param oldPath String 原文件路径 * @param newPath String 复制后路径 * @return boolean */ public static void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); File newfile = new File(newPath); if (!newfile.exists()) { newfile.createNewFile(); } if (oldfile.exists()) { // 文件存在时 InputStream inStream = new FileInputStream(oldPath); // 读入原文件 FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; while ((byteread = inStream.read(buffer)) != -1) { bytesum += byteread; // 字节数 文件大小 fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("复制单个文件操作出错"); e.printStackTrace(); } }