How to compress files into zip folder in android? [duplicate]
These persmissions are required to store data to your device storage.
Mainfest.xml file
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Permission requested for write external storage(Updated by 2018/10/04)
public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE ); }}
Zip Function
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(); } }
Use the Zip Function
String[] s = new String[2];// Type the path of the files in heres[0] = inputPath + "/image.jpg";s[1] = inputPath + "/textfile.txt"; // /sdcard/ZipDemo/textfile.txt// first parameter is d files second parameter is zip file nameZipManager zipManager = new ZipManager();// calling the zip functionzipManager.zip(s, inputPath + inputFile);
Unzip Function
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); }}
Use the unzip function
ZipManager zipManager = new ZipManager();zipManager.unzip(inputPath + inputFile, outputPath);
[Source: http://stacktips.com/tutorials/android/how-to-programmatically-zip-and-unzip-file-in-android]