亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android 大文件切割與合并的實現代碼

2019-10-21 21:36:00
字體:
來源:轉載
供稿:網友

前言:

由于公司的業務,硬生生的把ios開發的我,掰成了android!關于上傳文件的需求處理,做了一個Java的簡單封裝 DocumentManagement 。其中集成了,檢測文件,MD5加密,Base64加密/解碼,針對文件Base64加密處理,獲取文件后戳,切割文件,合并文件等方法。

親測可切割與合并有效:視頻、mp3、jpg、apk!還有很多沒測,講道理應該是都可以的。合并效果如圖:

Android,大文件,切割,合并,代碼

好了不扯皮了,直接上代碼!注:以下代碼僅供參考,如有想法請留言告知 DocumentManagement 使用方法如下:

//文件              File file = new File(strPath);              documentManagement.log("開始——汪汪汪汪");              //切割文件              documentManagement.getSplitFile(file,1*1024*1024 );              //合并文件              String merFileName = "gsplay";//自定義合并文件名字              //創建合并文件路徑              String filePath = Environment.getExternalStorageDirectory().getPath()+"/"+merFileName;              documentManagement.merge(filePath,file,1*1024*1024);              documentManagement.log("結束——汪汪汪汪");

Java獲取文件后綴

/**   * 獲取文件后綴名 例如:.mp4 /.jpg /.apk   * @param file 指定文件   * @return String 文件后綴名   */  public static String suffixName (File file){    String fileName=file.getName();    String fileTyle=fileName.substring(fileName.lastIndexOf("."),fileName.length());    return fileTyle;  }

文件按設定的大小進行切割

/**   * 文件分割方法   * @param targetFile 分割的文件   * @param cutSize 分割文件的大小   * @return int 文件切割的個數   */  public static int getSplitFile(File targetFile ,long cutSize ) {    //計算切割文件大小    int count = targetFile.length() % cutSize == 0 ? (int) (targetFile.length() / cutSize) :        (int) (targetFile.length() / cutSize + 1);    RandomAccessFile raf = null;    try {      //獲取目標文件 預分配文件所占的空間 在磁盤中創建一個指定大小的文件  r 是只讀      raf = new RandomAccessFile(targetFile, "r");      long length = raf.length();//文件的總長度      long maxSize = length / count;//文件切片后的長度      long offSet = 0L;//初始化偏移量      for (int i = 0; i < count - 1; i++) { //最后一片單獨處理        long begin = offSet;        long end = (i + 1) * maxSize;        offSet = getWrite(targetFile.getAbsolutePath(), i, begin, end);      }      if (length - offSet > 0) {        getWrite(targetFile.getAbsolutePath(), count-1, offSet, length);      }    } catch (FileNotFoundException e) {//      System.out.println("沒有找到文件");      e.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    } finally {      try {        raf.close();      } catch (IOException e) {        e.printStackTrace();      }    }    return count;  }  /**   * 指定文件每一份的邊界,寫入不同文件中   * @param file 源文件地址   * @param index 源文件的順序標識   * @param begin 開始指針的位置   * @param end 結束指針的位置   * @return long   */  public static long getWrite(String file,int index,long begin,long end ){    long endPointer = 0L;    String a=file.split(suffixName(new File(file)))[0];    try {      //申明文件切割后的文件磁盤      RandomAccessFile in = new RandomAccessFile(new File(file), "r");      //定義一個可讀,可寫的文件并且后綴名為.tmp的二進制文件      //讀取切片文件      File mFile = new File(a + "_" + index + ".tmp");      //如果存在      if (!isFileExist(mFile)) {        RandomAccessFile out = new RandomAccessFile(mFile, "rw");        //申明具體每一文件的字節數組        byte[] b = new byte[1024];        int n = 0;        //從指定位置讀取文件字節流        in.seek(begin);        //判斷文件流讀取的邊界        while ((n = in.read(b)) != -1 && in.getFilePointer() <= end) {          //從指定每一份文件的范圍,寫入不同的文件          out.write(b, 0, n);        }        //定義當前讀取文件的指針        endPointer = in.getFilePointer();        //關閉輸入流        in.close();        //關閉輸出流        out.close();      }else {        //不存在      }    } catch (Exception e) {      e.printStackTrace();    }    return endPointer - 1024;  }

文件合并

/**   * 文件合并   * @param fileName 指定合并文件   * @param targetFile 分割前的文件   * @param cutSize 分割文件的大小   */  public static void merge(String fileName,File targetFile ,long cutSize) {    int tempCount = targetFile.length() % cutSize == 0 ? (int) (targetFile.length() / cutSize) :        (int) (targetFile.length() / cutSize + 1);    //文件名    String a=targetFile.getAbsolutePath().split(suffixName(targetFile))[0];    RandomAccessFile raf = null;    try {      //申明隨機讀取文件RandomAccessFile      raf = new RandomAccessFile(new File(fileName+suffixName(targetFile)), "rw");      //開始合并文件,對應切片的二進制文件      for (int i = 0; i < tempCount; i++) {        //讀取切片文件        File mFile = new File(a + "_" + i + ".tmp");        //        RandomAccessFile reader = new RandomAccessFile(mFile, "r");        byte[] b = new byte[1024];        int n = 0;         //先讀后寫         while ((n = reader.read(b)) != -1) {//讀           raf.write(b, 0, n);//寫         }         //合并后刪除文件        isDeleteFile(mFile);         //日志        log(mFile.toString());      }    } catch (Exception e) {      e.printStackTrace();    } finally {      try {        raf.close();      } catch (IOException e) {        e.printStackTrace();      }    }  }

DocumentManagement_Dome_Git下載地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
xvideos亚洲| 欧美最顶级的aⅴ艳星| 欧美亚洲成人精品| 亚洲毛片在线观看.| 国产女人精品视频| 狠狠色狠狠色综合日日小说| 久久九九精品99国产精品| 夜夜嗨av一区二区三区免费区| 国产精品爽爽ⅴa在线观看| 日本成人在线视频网址| 亚洲国产欧美日韩精品| 亚洲视频第一页| 日韩精品999| 久久久久久网址| 国产一区二区三区高清在线观看| 欧美精品videosex性欧美| 欧美日韩国产第一页| 亚洲香蕉在线观看| 亚洲免费成人av电影| 欧日韩不卡在线视频| 亚洲人精品午夜在线观看| 日韩激情视频在线播放| 亚洲xxxxx电影| 日av在线播放中文不卡| 亚洲精品美女在线观看| 97免费视频在线播放| 国产成人福利网站| 午夜精品久久久久久99热软件| 中文字幕日韩专区| 亚洲天堂免费在线| 精品国产拍在线观看| 国产精品视频白浆免费视频| 91久久夜色精品国产网站| 91精品视频在线看| 91国内揄拍国内精品对白| 国产精品一区=区| 亚洲一品av免费观看| 高清欧美电影在线| 日本伊人精品一区二区三区介绍| 色综合老司机第九色激情| 97在线观看免费高清| 欧美日韩福利在线观看| 国产日本欧美一区二区三区在线| 国产成人精品999| 国产精品九九久久久久久久| 国产999在线观看| 国产不卡av在线免费观看| 激情av一区二区| 亚洲精品美女久久| xxav国产精品美女主播| 精品国产乱码久久久久久虫虫漫画| 欧美中文字幕精品| 在线观看精品国产视频| 欧美亚洲视频一区二区| 成人黄色免费片| 国产亚洲精品成人av久久ww| 欧美在线精品免播放器视频| 欧美诱惑福利视频| 亚洲国产天堂久久综合网| 久久久久久久久久久免费精品| 欧美一级在线亚洲天堂| 亚洲日本中文字幕免费在线不卡| 亚洲精品日韩丝袜精品| 91久久国产婷婷一区二区| 亚洲精品美女在线观看| 国产成人精品免高潮在线观看| 永久免费毛片在线播放不卡| 欧美视频不卡中文| 国产精品夫妻激情| 91精品一区二区| 久久99久国产精品黄毛片入口| 久久国产精品久久精品| 激情av一区二区| 日韩免费在线播放| 精品国产乱码久久久久酒店| 日韩激情av在线免费观看| 国自产精品手机在线观看视频| 在线观看成人黄色| 欧美激情免费视频| 国产男女猛烈无遮挡91| 亚洲黄色在线观看| 影音先锋欧美在线资源| 欧美不卡视频一区发布| 国产欧美精品久久久| 91av网站在线播放| 91成人免费观看网站| 91久久在线播放| 国产精品99久久久久久人| 亚洲的天堂在线中文字幕| 日韩欧美高清视频| 成人欧美一区二区三区在线| 国产精品日韩一区| 97精品欧美一区二区三区| 欧美日韩一区二区三区| 国产中文字幕91| 97热在线精品视频在线观看| 伊人伊成久久人综合网站| 97在线免费观看视频| 欧美性猛交xxxx黑人| 久久天堂av综合合色| 欧美在线观看www| 国产精品久久久999| 亚洲精品国产精品乱码不99按摩| 亚洲成人黄色网址| 欧美专区在线观看| 91精品视频观看| 国产免费一区二区三区在线能观看| 亚洲欧美激情在线视频| 国产精品一区久久久| 最近2019年日本中文免费字幕| 久久天天躁狠狠躁夜夜躁| 国产精品pans私拍| 国产午夜精品一区理论片飘花| 国产视频久久久久久久| 国产啪精品视频| 亚洲欧美日韩精品久久亚洲区| 欧美裸体男粗大视频在线观看| 色婷婷成人综合| 亚洲欧洲一区二区三区久久| 国产精品视频最多的网站| 亚洲精品mp4| 亚洲国产精品久久精品怡红院| 久久久精品在线| 日韩中文字幕在线播放| 日韩av电影在线免费播放| 久久精品久久久久久国产 免费| 668精品在线视频| 中文字幕亚洲二区| 欧美午夜精品久久久久久人妖| 日韩成人中文字幕在线观看| 成人黄色影片在线| 高清日韩电视剧大全免费播放在线观看| 久久免费视频在线观看| 中文字幕日韩综合av| 国产成人激情视频| 91网站免费观看| 精品国产视频在线| 国内精久久久久久久久久人| 中文字幕日韩欧美在线视频| 在线观看国产精品淫| 欧美精品久久久久久久免费观看| 亚洲美女中文字幕| 亚洲综合一区二区不卡| 精品国产欧美一区二区三区成人| 亚洲欧美制服综合另类| 色综合久久天天综线观看| 国产精品毛片a∨一区二区三区|国| 亚洲网址你懂得| 亚洲最大福利网站| 九色成人免费视频| 欧美性xxxx18| 久久久久久久香蕉网| 精品国产成人av| 欧美日韩国产综合新一区| 精品美女国产在线| 国产精品久久久久久久美男| 久久精品国产v日韩v亚洲| 亚洲欧美国产另类| 亚洲丝袜在线视频| 国产一区深夜福利| 亚洲一区二区三区乱码aⅴ蜜桃女| 97精品视频在线| 国产aⅴ夜夜欢一区二区三区| 日韩av在线导航|