آموزش ساخت فایل zip در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت فایل zip در برنامه نویسی اندروید می پردازیم قبلتر آموزش unzip کردن را قرار داده بودیم و امروز تصمیم گرفتیم تا این آموزش را برای شما دوستان قرار دهیم فشرده سازی یا ایجاد فایل zip سبب سر و سامان دادن به فایل ها می شود به طور مثال اگر بخواهیم چندین فایل از توع مختلف را در یک فایل قرار دهیم می توانیم از این راه استفاده کنیم در ادامه با ما همراه باشید.
در دفعه قبل برای اینکه یک فایل را unzip کنیم یک کلاس درست کردیم ولی اینبار با استفاده از یک void این کار رو می کنیم (ایجاد کلاس هم کاری ندارد شبیه به هم هستند)
ابتدا خط زیر را قبل از OnCreate قرار دهید (قبل از Override)
1 | public static int BUFFER = 2048; |
پس void ما به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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(); } } |
البته فرق کد بالا در این است که ورودی ما به صورت آرایه است یعنی هر چندتا فایل که بخواهیم می تونیم باهم به یک فایل zip تبدیلش کنیم و void ما دو مقدار ورودی دارد اولی که از نوع آرایه است و مسیر فایل ما رو شامل می شود و دومی هم نام فایل ما است و همانند قبل از کلاس Buffer برای ایجاد فایل و نوشتن داده ها استفاده کردیم وکلاس مهمتر ZipOutputStream که برای ایجاد فایل zip استفاده می شود برای اینکه به شکل آرایه است از zipEntry استفاده کردیم تا تمامی آنها را در یک فایل قرار دهیم و نحوه استفاده از آن هم به شکل زیر است.
1 2 3 4 5 | String[] s = new String[2]; String path = Environment.getExternalStorageDirectory().getAbsolutePath(); s[0] = path + "/1.png"; s[1] = path + "/2.png"; zip(s,path+"/"+"new.zip"); |
در بالا ما یک فایل txt و یک فایل jpg را درون یک فایل zip قرار می دهیم دقت کنید شما باید دو فایل با نام های textfile.txt و image.jpg درون حافظه دستگاه خود داشته باشید (و اگر نه ارور خواهد داد!)
اگر خواستید 3 یا بیشتر از آن فایل را zip کنید ابتدا مقدار آرایه s را زیاد کرده به طور مثال برای سه فایل باید بشود سه و یک اندیس از همان آرایه تعریف کرده و مسیر فایل را در آن بریزید .
و در آخر دسترسی های زیر رو اضافه کند.
1 2 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> |
و برنامه رو اجرا کنید اگر روی گوشی خودتان می خواهید اجرا کنید پس از نصب برنامه usb را بکنید تا برنامه بتواند از حافظه استفاده کند.
این آموزش هم به پایان رسید.
موفق باشید.
سلام خسته نباشید من اومدم لیست فایل های یک پوشه رو گرفتم بعد همه رو زیپ کنم
و موقعی زیپ میکنه اگه جمع فایلا کمتر 109 مگابایت باشه کار میکنه در غیر این صورت زیپ خراب میسازه و کار نمیکنه چیکار کنم ؟