ورچر

آموزشهای پراکنده از دنیای برنامه نویسی اندروید

تکه کد کاربردی - زیپ یا آنزیپ کردن در اندروید post image

تکه کد کاربردی - زیپ یا آنزیپ کردن در اندروید

تگ ها : زیپ کردن در اندروید,آنزیپ کردن در اندروید,زیپ کردن فایل ها در اندروید با کد,آنزیپ کردن فایلهای زیپ در اندروید با کد
آخرین ویرایش : 1395/4/4

بعضی مواقع در برنامه نویسی اندروید نیازمند انتقال تعداد زیادی از داده ها می شویم. ترجیح بعضی از برنامه نویسان زیپ کردن داده ها در داخل اپ و آنزیپ کردن آن بعد از نصب می باشد. حال دو تابع کاربردی zip() و unzip() را برایتان تهیه کرده ایم.

 

تابع zip به این صورت می باشد

پارامتر اول آرایه ای از آدرس فایلهایی که می خواهیم زیپ شود می باشد و پارامتر دوم نام و آدرس خروجی فایل زیپ می باشد.

public void zip(String[] _files, String zipFileName) {
  try {
   BufferedInputStream origin = null;
   FileOutputStream dest = new FileOutputStream(zipFileName);
   ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
     dest));
   byte data[] = new byte[BUFFER];

   for (int i = 0; i < _files.length; i++) {
    Log.v("Compress", "Adding: " + _files[i]);
    FileInputStream fi = new FileInputStream(_files[i]);
    origin = new BufferedInputStream(fi, BUFFER);

    ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1));
    out.putNextEntry(entry);
    int count;

    while ((count = origin.read(data, 0, BUFFER)) != -1) {
     out.write(data, 0, count);
    }
    origin.close();
   }

   out.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 

تایع unzip نیز به شکل زیر می باشد.

پارامتر اول نام و آدرس فایل زیپ می باشد. پارامتر دوم محلی که می خواهیم به آن اکسترکت کنیم.

public void unzip(String _zipFile, String _targetLocation) {

  //create target location folder if not exist
  dirChecker(_targetLocatioan);

  try {
   FileInputStream fin = new FileInputStream(_zipFile);
   ZipInputStream zin = new ZipInputStream(fin);
   ZipEntry ze = null;
   while ((ze = zin.getNextEntry()) != null) {

    //create dir if required while unzipping
    if (ze.isDirectory()) {
     dirChecker(ze.getName());
    } else {
     FileOutputStream fout = new FileOutputStream(_targetLocation + ze.getName());
     for (int c = zin.read(); c != -1; c = zin.read()) {
      fout.write(c);
     }

     zin.closeEntry();
     fout.close();
    }

   }
   zin.close();
  } catch (Exception e) {
   System.out.println(e);
  }
}

 

توجه : یادتان باشد دسترسی های زیر را نیز به پروژه خود بیافزایید.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE”/>