Farzad Sarseifi

ZIP و UNZIP کردن پوشه ها در اندروید

5 ارسال در این موضوع قرار دارد

در این آموزش نحوه zip و unzip کردن پوشه ها در حافظه sdcard انجام میشود

1) ابتدا Permission های زیر را در فایل Manifest اعمال کنید:

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

 

2) تابع زیر را برای 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);

                FileInputStream fi = new FileInputStream(_files);

                origin = new BufferedInputStream(fi, BUFFER);

 

                ZipEntry entry = new ZipEntry(_files.substring(_files.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();

        }

    }

 

3) از فشرده خارج کردن فایل zip :


 

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©;

                    }


                    zin.closeEntry();

                    fout.close();

                }


            }

            zin.close();

        } catch (Exception e) {

            System.out.println(e);

        }

}

 

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

الان من دو سه تا فایل و پوشه کنار هم تو حافظه خارجی دارم (که البته پوشه ها هم فایل داخلشونه.)

مثل اینها:

[shcode=java]

final File root = android.os.Environment.getExternalStorageDirectory();

root.getAbsolutePath() + "/folder1"

root.getAbsolutePath() + "/folder2"

root + "/about.png"

root + "/folder1/pic.png"

[/shcode]

چطور با این کد zipشون کنم؟

دقیقا با همین پوشه بندی که تو حافظه خارجی هستن بیوفتن تو zip

هر تغییری میدم با اینکه اکلیپس ارور نمیده ولی فایل zip ساخته نمیشه.

پرمیشن ها رو هم اضافه کردم.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خسته نباشد

دوستان من چند تا کد تا حالا استفاده کردم و هیچ کدامشان تا به حال جواب نداد!

 کد زیر را بررسی کنید ببینید متوجه میشوید چرا جواب نمیده؟

package com.zipp;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.nio.Buffer;import java.nio.ByteBuffer;import android.util.Log;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(BundlesavedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}public String[] _files;   public String _zipFile  = "/mnt/sdcard/123.zip"; public class Compress { private static final int BUFFER = 2048; public Compress(String[] files, String zipFile) {   _files = files;   _zipFile = zipFile; 	Button btn_zip = (Button) findViewById(R.id.zip);	btn_zip.setOnClickListener(new OnClickListener() {	@Override	public void onClick(View arg0) {  try  {     BufferedInputStream origin = null;     FileOutputStream dest = new FileOutputStream(_zipFile);     ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));     String path = "/mnt/sdcard/out";    File fileDir = new File( path );    if(!fileDir.exists() || !fileDir.isDirectory())    {        return;    }    String[] _files = fileDir.list();     for ( int i = 0 ; i < _files.length ; i++      {           _files[i] = path + "/"+ _files[i];    }    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();   } }	});}   }}

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

واقعا خیلی سخته این سوال من؟؟؟!!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

با سلام اگر بخواهیم فایل را پسورد بگذاریم به چه صورت است ؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری