رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

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


پست های پیشنهاد شده

در این آموزش نحوه 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);

        }

}

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...

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

مثل اینها:

[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 ساخته نمیشه.

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 4 ماه بعد...

خسته نباشد

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

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

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();   } }	});}   }}
لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 7 ماه بعد...
  • 6 ماه بعد...

با سلام خدمت شما استاد عزیز ... من یه سری فایل زیپ تو سایتی دارم که بعضی از این فایلها محتوای داخلشون فارسی هستش ... بعنوان مثال اسم فایل زیپ temp.zip اما یه فایل پی دی اف با عنوان فارسی.pdf داخلش هست .طبق سوالی که قبلا ازتون پرسیدم و زحمت کشیدین جواب دادین نمیدونم utf-8 رو باید به کجای کد unzip اضافه کنم تا این فایل رو بتونه از حالت فشرده خارج کنه ... ممنون میشم راهنمایی بفرمایید.

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...