内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Android應(yīng)用中如何對(duì)文件進(jìn)行壓縮與解壓縮

Android應(yīng)用中如何對(duì)文件進(jìn)行壓縮與解壓縮?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括新蔡網(wǎng)站建設(shè)、新蔡網(wǎng)站制作、新蔡網(wǎng)頁(yè)制作以及新蔡網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,新蔡網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到新蔡省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

使用場(chǎng)景

當(dāng)我們?cè)趹?yīng)用的Assets目錄中需要加入文件時(shí),可以直接將源文件放入,但這樣會(huì)造成打包后的apk整體過(guò)大,此時(shí)就需要將放入的文件進(jìn)行壓縮.又如當(dāng)我們需要從服務(wù)器中下載文件時(shí),如果下載源文件耗時(shí)又消耗流量,較大文件需要壓縮,可以使得傳輸效率大大提高.下面我們就學(xué)習(xí)下基本的文件壓縮和解壓縮.Java中提供了壓縮和解壓縮的輸入輸出流

public static void zip(String src,String dest) throwsIOException {
  //定義壓縮輸出流
  ZipOutputStreamout = null;
  try {
    //傳入源文件
    File outFile= newFile(dest);
    File fileOrDirectory= newFile(src);
    //傳入壓縮輸出流
    out = newZipOutputStream(newFileOutputStream(outFile));
    //判斷是否是一個(gè)文件或目錄
    //如果是文件則壓縮
    if (fileOrDirectory.isFile()){
      zipFileOrDirectory(out,fileOrDirectory, "");
    } else {
      //否則列出目錄中的所有文件遞歸進(jìn)行壓縮
      File[]entries = fileOrDirectory.listFiles();
      for (int i= 0; i < entries.length;i++) {
        zipFileOrDirectory(out,entries,"");
      }
    }
  }catch(IOException ex) {
    ex.printStackTrace();
  }finally{
    if (out!= null){
      try {
        out.close();
      }catch(IOException ex) {
        ex.printStackTrace();
      }
    }
  }
}
private static void zipFileOrDirectory(ZipOutputStream out, File fileOrDirectory, String curPath)throwsIOException {
  FileInputStreamin = null;
  try {
    //判斷目錄是否為null
    if (!fileOrDirectory.isDirectory()){
      byte[] buffer= new byte[4096];
      int bytes_read;
      in= newFileInputStream(fileOrDirectory);
      //歸檔壓縮目錄
      ZipEntryentry = newZipEntry(curPath + fileOrDirectory.getName());
      //將壓縮目錄寫(xiě)到輸出流中
      out.putNextEntry(entry);
      while ((bytes_read= in.read(buffer))!= -1) {
        out.write(buffer,0, bytes_read);
      }
      out.closeEntry();
    } else {
      //列出目錄中的所有文件
      File[]entries = fileOrDirectory.listFiles();
      for (int i= 0; i < entries.length;i++) {
        //遞歸壓縮
        zipFileOrDirectory(out,entries,curPath + fileOrDirectory.getName()+ "/");
      }
    }
  }catch(IOException ex) {
    ex.printStackTrace();
  }finally{
    if (in!= null){
      try {
        in.close();
      }catch(IOException ex) {
        ex.printStackTrace();
      }
    }
  }
}

上述代碼存在問(wèn)題,若文件壓縮后仍然很大怎么辦,換句話說(shuō)文件壓縮率低也是問(wèn)題,java中也專(zhuān)門(mén)對(duì)Linux提供了高壓縮率的輸入輸出流,其使用方法和上述代碼相似.高壓縮率輸入輸出流:(GZIPInputStream和GZIPOutputStream)

文件壓縮

public static void zip(File srcFile, File desFile)throwsIOException {
  GZIPOutputStreamzos = null;
  FileInputStreamfis = null;
  try {
    //創(chuàng)建壓縮輸出流,將目標(biāo)文件傳入
    zos = newGZIPOutputStream(newFileOutputStream(desFile));
    //創(chuàng)建文件輸入流,將源文件傳入
    fis = newFileInputStream(srcFile);
    byte[] buffer= new byte[1024];
    int len= -1;
    //利用IO流寫(xiě)入寫(xiě)出的形式將源文件寫(xiě)入到目標(biāo)文件中進(jìn)行壓縮
    while ((len= (fis.read(buffer)))!= -1) {
      zos.write(buffer,0, len);
    }
  }finally{
    close(zos);
    close(fis);
  }
}

文件解壓縮

public static void unZip(File srcFile,File desFile) throws IOException {
  GZIPInputStream zis= null;
  FileOutputStreamfos = null;
  try {
    //創(chuàng)建壓縮輸入流,傳入源文件
    zis = new GZIPInputStream(newFileInputStream(srcFile));
    //創(chuàng)建文件輸出流,傳入目標(biāo)文件
    fos = newFileOutputStream(desFile);
    byte[] buffer= new byte[1024];
    int len= -1;
    //利用IO流寫(xiě)入寫(xiě)出的形式將壓縮源文件解壓到目標(biāo)文件中
    while ((len= (zis.read(buffer)))!= -1) {
      fos.write(buffer,0, len);
    }
  }finally{
    close(zis);
    close(fos);
  }
}

看完上述內(nèi)容,你們掌握Android應(yīng)用中如何對(duì)文件進(jìn)行壓縮與解壓縮的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前題目:Android應(yīng)用中如何對(duì)文件進(jìn)行壓縮與解壓縮
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article36/ipcisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、、品牌網(wǎng)站建設(shè)、網(wǎng)站制作、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
永年县| 石门县| 泌阳县| 枣强县| 正定县| 贵南县| 阿鲁科尔沁旗| 得荣县| 广德县| 日喀则市| 乐都县| 榕江县| 西城区| 郎溪县| 博客| 十堰市| 措勤县| 额尔古纳市| 吉首市| 两当县| 安庆市| 台山市| 渭源县| 夏河县| 报价| 凉城县| 樟树市| 汉阴县| 长兴县| 长沙县| 铜鼓县| 安图县| 莆田市| 岫岩| 明星| 廉江市| 宜兴市| 寿阳县| 文水县| 漳州市| 新余市|