آموزشهای پراکنده از دنیای برنامه نویسی اندروید
بعضی مواقع در برنامه نویسی اندروید نیازمند انتقال تعداد زیادی از داده ها می شویم. ترجیح بعضی از برنامه نویسان زیپ کردن داده ها در داخل اپ و آنزیپ کردن آن بعد از نصب می باشد. حال دو تابع کاربردی zip() و unzip() را برایتان تهیه کرده ایم.
پارامتر اول آرایه ای از آدرس فایلهایی که می خواهیم زیپ شود می باشد و پارامتر دوم نام و آدرس خروجی فایل زیپ می باشد.
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();
}
}
پارامتر اول نام و آدرس فایل زیپ می باشد. پارامتر دوم محلی که می خواهیم به آن اکسترکت کنیم.
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”/>