在android的应用中要用的

android的应用,如果数据库外置,需要将数据库在第一次运行运用的时候复制到数据库文件夹中。

而assert文件夹无法将大于1M的数据库复制到手机的数据库文件中的,所以要首先对文件进行分割

文件的分割:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class ManFile_1 {public static void main(String[] args) throws Exception {        // 大文件放置的路径        String path = "file1/";        // 大文件的文件名称        String base = "icta";        String ext = ".db";        // 以每个小文件1024*512字节即1M的标准来分割        int split = 1024 * 150;        byte[] buf = new byte[1024 * 50];//每次读取的大小    int num = 1;        // 建立输入流        File inFile = new File(path + base + ext);       System.out.println(inFile.getName());    FileInputStream fis = new FileInputStream(inFile);        while (true) {            // 以"demo"+num+".db"方式来命名小文件即分割后为demo1.db,demo2.db,。。。。。。            FileOutputStream fos = new FileOutputStream(new File(path + base + num + ext));            for (int i = 0; i < split / buf.length; i++) {            System.out.println("---");            int read = fis.read(buf);             //fis.read(null) ;            System.out.println(read);            fos.write(buf, 0, read);               // 判断大文件读取是否结束                if (read < buf.length) {                    fis.close();                    fos.close();                    return;                }                        }            fos.close();            num++;        }    }}

分割的使用说明:

// 以每个小文件1024*512字节即1M的标准来分割

    int split = 1024 * 150;        byte[] buf = new byte[1024 * 50];//每次读取的大小

split 表示每个分割的文件最大存放大学,buf 表示读取的大小(分割到每个文件中,读取原来的文件要多次,
而每次读取的大学就是buf)

例如:我们要分割800kb的文件为4个文件夹,那么可以设置split 为1024 * 200 (buf的大小必须小于split的)

其他的探索,看下代码就知道了。

合并程序就简单了,无需修改,只需要你对应好文件的名字就可以了:

import java.io.File;
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;public class ToFiles {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubmergeApkFile() ;}/**   * 合并文件   *    * @param c   * @param partFileList 小文件名集合   * @param dst 目标文件路径   * @throws IOException   *    * @author zuolongsnail   */    private static void mergeApkFile() throws Exception{   File fileto = new File("file2/icta.db") ;File[] files = null;    if (!fileto.exists()) {         fileto.createNewFile() ;        System.out.println("----");        OutputStream out = new FileOutputStream(fileto);            byte[] buffer = new byte[1024];                    File file = new File("file1") ;        files = file.listFiles() ;        System.out.println(files.length);                InputStream in;            int readLen = 0;            for(int i=0; i < files.length; i++){                // 获得输入流    //            in = c.getAssets().open(partFileList.get(i));            in = new FileInputStream(files[i]) ;            while((readLen = in.read(buffer)) != -1){                    out.write(buffer, 0, readLen);                }                out.flush();                in.close();            }            // 把所有小文件都进行写操作后才关闭输出流,这样就会合并为一个文件了            out.close();        }    }    }

项目的截图:


更多相关文章

  1. Android(安卓)Protect-0.签名相关
  2. 【Android测试】Android抓包解析全过程
  3. android核心基础(10)_apk安装过程
  4. 如何添加 android private libraries 中的包的源代码
  5. android mk文件编写
  6. android properties
  7. Android(安卓)自定义控件-SnakeLayout (仿gallery)
  8. ADB源码分析
  9. JFrame实现批量获取Android安装包安全证书MD5

随机推荐

  1. 升级Android Studio 3.2.1后 遇到问题
  2. 通过Android上的意图启动Google地图路线
  3. Android Build系统常见变量说明
  4. Android 小球碰撞检测技术
  5. android 原生应用的调用
  6. android常用intent的方法
  7. [Android] URI那些事
  8. 【Android(安卓)开发教程】GridView
  9. 最详细的mac下Android(安卓)studio配置gr
  10. Android Studio中实现摇杆