خانه » ادوبی ایر » فشرده سازی فایل‌ها و استخراج فایل Zip در پروژه Air

فشرده سازی فایل‌ها و استخراج فایل Zip در پروژه Air

فشرده سازی فایل‌ها و استخراج فایل Zip در پروژه Air

در این مطلب نحوه فشرده سازی فایل‌ها به صورت zip و استخراج فایل‌های فشرده شده با فرمت zip و نمایش لیست محتویات فایل zip آموزش داده می‌شود. همچنین در این درس استفاده از کلاسه‌های swc آموزش داده می‌شود.


دانلود components

دانلود سورس


قبل از شروع فایل components.zip را دانلود کنید و فایل‌های داخل آنرا با توجه به محل نصب Flash در پوشه libs کپی کنید. یا از بخش ActionScript Setting آنها را انتخاب کنید و به فلش خود اضافه نمایید.

install Path: \Adobe\Adobe Flash CS5\Common\Configuration\ActionScript 3.0\libs

فشرده سازی فایل‌ها

۱- برنامه Flash را اجرا کنید.

۲-  یک پروژه جدید Air ایجاد کنید.

۳- حال کلاسه‌های مورد نظر را import کنید.

import deng.fzip.*;
import deng.utils.ChecksumUtil;
import flash.filesystem.File;
import flash.utils.ByteArray;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;

4- در ادامه باید ۳ متغیر ایجاد کنید و فایل مورد نظر را که می‌خواهید فشرده شود تعریف نمایید.

var zip:FZip = new FZip();
var ba:ByteArray = new ByteArray();
var file:File = new File();

5- با کد resolvePath فایل مورد نظر را به کلاسه File معرفی کنید. (به جای c:/test.txt آدرس فایل مورد نظرتان را بنویسید. دقت کنید که به جای “\” از “/” استفاده نمایید.)

file = file.resolvePath("c:/test.txt");

6- حال باید فایل مورد نظر و محتویات آنرا به متغیر zip معرفی کنید. همچنین واسطه ByteArray را هم باید به zip معرفی کنید.

zip.addFile(file.name,file.data);
zip.serialize(ba);
ba.position = 0;

7- در نهایت نیاز است که آدرس فایل خروجی (با فرمت zip) را تعریف کرده و به وسیله یک FileStream اطلاعات تبدیل شده را روی آن دخیره کرد.

var finalZip:File = File.desktopDirectory.resolvePath(“test.zip”);
var fs:FileStream = new FileStream();
fs.open(finalZip,FileMode.WRITE);
fs.writeBytes(ba);
fs.close();

استخراج فایل Zip

1- یک پروژه جدید Air ایجاد کنید.

۲- از منوی Window پنل Components را فعال کنید.

۳- از دسته User Interface گزینه Button را انتخاب کنید و ۲ بار آنرا به داخل صفحه Drag کنید.

۴- در پنل Properties، نام Instance دکمه‌ها را به ترتیب load_btn و extract بگذارید و تنظیمات مربوطه را به صورت زیر انجام دهید.




۵- حال کلاسه‌های مورد نظر را import کنید و متغیرهای مورد نیاز را برای تعریف فایل zip ایجاد کنید.

import flash.filesystem.*;
import flash.net.FileFilter;
import nochump.util.zip.*;
import flash.events.Event;
var zipInput:File = new File();
var zipOutput:File = new File();
var zipFile:ZipFile;

6- در ادامه برای هر دکمه یک Event Listener تعریف کنید تا در هر بار کلیک توابع مربوطه اجرا شود.

load_btn.addEventListener("click", loadZIP);
extract.addEventListener("click", extractZIP);

7- تابع loadZip را که بعد از کلیک روی دکمه load_btn فراخوانی می‌شود، به صورت زیر تعریف کنید. بعد از کلیک روی این دکمه یک پنجره برای انتخاب فایل zip اجرا می‌شود.

function loadZIP(e:Event):void
{
	var filter:FileFilter = new FileFilter("ZIP","*.zip");
	zipInput.browseForOpen("Open ZIP file",[filter]);
	zipInput.addEventListener(Event.SELECT, onSelect);
}

اجزای مختلف این تابع به صورت زیر است:

  • filter: یک متغیر از نوع FileFilter برای تعریف فرمت Zip که بعد از کلیک روی دکمه مربوطه در پنجره انتخاب فایل نمایش داده می‌شود.
  • browseForOpen: پنجره انتخاب فایل را نشان می‌دهد و عنوان آن در اینجا برای مثال “Open Zip file” و فرمت فایل‌های انتخابی filter می‌باشد.

۸- حال باید تابع onSelect را که بعد از انتخاب فایل فراخوانی می‌شود، تعریف کنید.

function onSelect(e:Event):void
{
	var stream:FileStream = new FileStream();
	stream.open(zipInput,FileMode.READ);
	zipFile = new ZipFile(stream);
	extract.enabled = true;
}

در این تابع:

  • stream: متغیری از نوع FileStream است که فایل zip انتخاب شده را در برنامه به جریان می‌اندازد.
  • zipFile: متغیری است که در ابتدا ایجاد شد و در اینجا stream به آن معرفی می‌شود.

۹- تابع extractZIP که بعد از کلیک روی دکمه extract فراخوانی می‌شود، به صورت زیر تعریف می‌شود. در این تابع یک پنجره برای انتخاب پوشه مقصد (جایی که فایل zip باید استخراج شود) نمایش داده می‌شود.

function extractZIP(e:Event):void
{
	zipOutput.browseForDirectory("Select Directory for extract");
	zipOutput.addEventListener(Event.SELECT, onDirSelect);
}

10- درنهایت تابع onDirSelect را که بعد از انتخاب پوشه مقصد فراخوانی می‌شود، به صورت زیر تعریف کنید.

function onDirSelect(e:Event):void
{
	for (var i:uint = 0; i<zipFile.entries.length; i++)
	{
		var zipEntry:ZipEntry = zipFile.entries[i] as ZipEntry;
		if (! zipEntry.isDirectory())
		{
			var targetDir:File = e.target as File;
			var entryFile:File = new File();
			entryFile = targetDir.resolvePath(zipEntry.name);
			var entry:FileStream = new FileStream();
			entry.open(entryFile, FileMode.WRITE);
			entry.writeBytes(zipFile.getInput(zipEntry));
			entry.close();
		}
		trace("Finished.");
	}
}

در این تابع:

  • یک حلقه for ایجاد شده است که به تعداد فایل‌های داخل فایل zip تکرار می‌شود.
  • در داخل حلقه یک متغیر از نوع ZipEntry تعریف شده است که محتویات فایل zip را یکی یکی معرفی می‌کند.
  • همچنین در داخل حلقه، یک دستور if وجود دارد که مطمئن می‌شود، فایل ورودی از zipEntry یک پوشه نباشد.
  • در ادامه فایل ورودی به وسیله یک FileStream در پوشه مقصد ذخیره می‌شود.
  • در نهایت بعد از تکمیل استخراج فایل zip، عبارت Finished نشان داده می‌شود.

نمایش فهرست فایل‌های داخل Zip

با استفاده از کلاسه‌های swc نصب شده در ابتدای این درس می‌توانید فهرست فایل ‌های داخل Zip را نمایش دهید. بدین منظور از کدهای زیر استفاده کنید.

import deng.fzip.*;
import deng.utils.ChecksumUtil;
import flash.filesystem.File;
import flash.utils.ByteArray;
import flash.events.Event;
import flash.net.URLRequest;

var zip:FZip = new FZip();
zip.addEventListener(FZipEvent.FILE_LOADED, fileLoaded);
zip.load(new URLRequest("d:/test.zip"));

function fileLoaded(e:FZipEvent):void
{
	var file:FZipFile = e.file;
	trace("File Loaded: " + file.filename);
	trace(" " + file.sizeCompressed);
	trace(" " + file.sizeUncompressed);
}


دانلود components

دانلود سورس

Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه