القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

تجمع الأرشيفات عدة ملفات معًا في تنسيق واحد ، عادةً ما يكون zip أو tar أو rar. قد تستخدم ملفات الأرشيف أيضًا الضغط لتقليل الحجم الإجمالي للملف.

يمكنك استخدام الأرشيف لتوزيع البرامج والبيانات ، بما في ذلك صفحات الويب. يمكنك أيضًا أرشفة تطبيقك ، بكل ملفاته وتبعياته ، ليتمكن المستخدمون من تنزيله وتثبيته.

تتيح لك حزمة أرشيف Go إنشاء واستخراج أرشيفات بتنسيق tar و zip.

حزمة أرشيف Go

يوفر Go أرشيف حزم للعمل مع تنسيقات الأرشيف المختلفة. يمكنك استخدام ال أَزِيز و قطران حزم لإنشاء ملفات أرشيف بهذه التنسيقات وقراءتها وكتابتها. تدعم كلتا الحزمتين خوارزميات ضغط متنوعة عبر واجهة برمجة تطبيقات سهلة الاستخدام.

إليك كيفية استيراد حزم zip و tar في ملفات Go:

يستورد (
"أرشيف / مضغوط"
"أرشيف / القطران"
)

بعد استيراد الحزم ، يمكنك استخدامها لإنشاء ملفات الأرشيف ومعالجتها.

إنشاء وإضافة ملفات إلى أرشيف تار

ال قطران حزمة تعمل مع القطران أرشيفات بتنسيقات tar و tar.gz ، بما في ذلك دعم قراءة وكتابة الملفات مع رؤوس PAX الممتدة.

instagram viewer

توفر حزمة القطران ملف NewWriter وظيفة لإنشاء أرشيفات القطران الجديدة. NewWriter يأخذ في io. كاتب مثيل الواجهة الذي قد يكون ملفًا أو مخزنًا للذاكرة ويعيد مؤشرًا إلى ملف قطران. كاتب هيكل.

طَرد رئيسي

يستورد (
"أرشيف / القطران"
"نظام التشغيل"
)

funcرئيسي() {
// إنشاء ملف جديد
ملف ، _: = نظام التشغيل. يخلق("myarchive.tar")
تأجيل ملف. يغلق()

// إنشاء أرشيف tar جديد
tarWriter: = القطران. NewWriter (ملف)
تأجيل tarWriter. يغلق()
}

ال يخلق وظيفة نظام التشغيل تقوم الحزمة بإنشاء ملف tar جديد. ال قطران. NewWriter تأخذ الوظيفة ملفًا وتنشئ أرشيفًا جديدًا.

يمكنك إضافة ملفات إلى أرشيف tar بامتداد اكتب العنوان و يكتب المهام. تأخذ الدالة WriteHeader ملف قطران. رأس هيكل كحجة. يحتوي هذا على البيانات الأولية للملف ، مثل اسم الملف وحجمه وبتات الإذن. تقوم وظيفة الكتابة بكتابة محتويات الملف إلى الأرشيف.

يستورد (
"أرشيف / القطران"
"FMT"
"io"
"سجل"
"نظام التشغيل"
)

funcرئيسي() {
// إنشاء ملف جديد
ملف ، _: = نظام التشغيل. يخلق("myarchive.tar")
ملف ، _ = نظام التشغيل. يخلق("message.txt")
تأجيل ملف. يغلق()

// إنشاء أرشيف tar جديد
tarWriter: = القطران. NewWriter (ملف)
تأجيل tarWriter. يغلق()

// إضافة ملف إلى الأرشيف
fileToAdd ، _: = نظام التشغيل. يفتح("file1.txt")
تأجيل fileToAdd. يغلق()
fileInfo ، _: = fileToAdd. إحصائيات ()
رأس _: = القطران. FileInfoHeader (fileInfo ، "")
tarWriter. WriteHeader (رأس)
_ ، _ = io. نسخ (tarWriter ، fileToAdd)
FMT. Println ("اكتملت عملية أرشيف تقرير التقييم الثالث")
}

يقوم البرنامج بإنشاء ملفات نصية وقطران جديدة بامتداد يخلق وظيفة نظام التشغيل الحزمة وأرشيف القطران الجديد مع NewWriter، قبل إضافة الملف إلى الأرشيف.

ال يفتح تفتح الوظيفة الملف لإضافته إلى الأرشيف. لاحظ أنك ستحتاج إلى ملف باسم file1.txt في دليل العمل الخاص بك لتشغيل هذا البرنامج بنجاح.

يمكنك استخدام ال ستات دالة لمثيل ملف لجلب البيانات الوصفية التي ستحتاجها لرأس tar. تمرير نتيجتها إلى FileInfoHeader، ثم تمرير هذه النتيجة إلى اكتب العنوان وظيفة لإعداد ملف القطران. أخيرًا ، انسخ الملف إلى الأرشيف باستخدام io. ينسخ.

استخراج الملفات من أرشيف تار

يمكنك استخدام ال قارئ جديد وظيفة لقراءة محتويات ملف أرشيف tar. تأخذ وظيفة NewReader ملف io. قارئ واجهة قد تكون ملفًا أو مخزنًا للذاكرة. تقوم بإرجاع المؤشر إلى قطران. قارئ هيكل.

يستورد (
"أرشيف / القطران"
"io"
"نظام التشغيل"
)

funcرئيسي() {
// افتح أرشيف القطران
ملف ، _: = نظام التشغيل. يفتح("myarchive.tar")
تأجيل ملف. يغلق()

// قم بإنشاء قارئ القطران الجديد
tarReader: = القطران. NewReader (ملف)

// كرر عبر الملفات في الأرشيف
ل {
header ، يخطئ: = tarReader. التالي()

لو يخطئ == io. EOF {
استراحة
}

// استخراج الملف
الملف ، _: = نظام التشغيل. إنشاء (header. اسم)
تأجيل الملف. يغلق()
_ ، _ = io. نسخ (outFile، tarReader)
}
}

ال لانهائية للحلقة يخترق نسخة قارئ tar ويستخرج الملفات بنسخ كل ملف بامتداد io الحزمة ينسخ وظيفة.

إنشاء وإضافة الملفات إلى أرشيفات مضغوطة

يمكنك إنشاء أرشيف مضغوط جديد بامتداد NewWriter وظيفة أَزِيز طَرد. تأخذ الدالة NewWriter نسخة ملف وتقوم بإرجاع كاتب مضغوط.

يستورد (
"أرشيف / مضغوط"
"نظام التشغيل"
)

funcرئيسي() {
// إنشاء ملف جديد
ملف ، يخطئ: = نظام التشغيل. يخلق("archive.zip")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

تأجيل ملف. يغلق()

// إنشاء كاتب مضغوط جديد
zipWriter: = الرمز البريدي. NewWriter (ملف)
تأجيل zipWriter. يغلق()
}

ال zipWriter متغير يخزن ملف كاتب المثال الذي يقوم NewWriter بإرجاعه.

يمكنك إضافة ملفات إلى أرشيفاتك المضغوطة بامتداد يخلق وظيفة مثيل الكاتب. تأخذ وظيفة إنشاء اسم الملف. يمكنك أيضًا استخدام ملف يكتب وظيفة مثيل الملف المضغوط لكتابة البيانات إلى الملفات في أرشيفات مضغوطة.

يستورد (
"أرشيف / مضغوط"
"نظام التشغيل"
)

funcرئيسي() {
// إنشاء ملفات جديدة
ملف ، يخطئ: = نظام التشغيل. يخلق("archive.zip")
ملف ، يخطئ = نظام التشغيل. يخلق("file1.txt")
ملف ، يخطئ = نظام التشغيل. يخلق("file2.txt")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

تأجيل ملف. يغلق()

// إنشاء كاتب مضغوط جديد
zipWriter: = الرمز البريدي. NewWriter (ملف)
تأجيل zipWriter. يغلق()

// أضف ملفات إلى الأرشيف
file1 ، يخطئ: = zipWriter. يخلق("file1.txt")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

file2 ، يخطئ: = zipWriter. يخلق("file2.txt")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

// اكتب البيانات إلى الملفات الموجودة في الأرشيف
file1.Write ([]بايت("مرحبا بالعالم!"))
file2.Write ([]بايت("وادعا أيتها الدنيا!"))
FMT. Println ("اكتملت عملية الأرشفة بتنسيق zip")
}

تبدأ الوظيفة الرئيسية باستخدام يخلق لإنشاء ملف مضغوط جديد وملفين نصيين. ثم يقوم بإنشاء كتابين لإضافة الملفين النصيين إلى الأرشيف. ال يكتب تقوم وظيفة كل مثيل بكتابة الرسائل إلى كل ملف من الملفات في الأرشيف.

استخراج الملفات من أرشيفات مضغوطة

يمكنك استخراج ملف مضغوط موجود بقراءته بامتداد OpenReader وظيفة ، ثم التنقل خلال محتوياتها ونسخ الملفات بامتداد io طَرد.

يستورد (
"أرشيف / مضغوط"
"FMT"
"io"
"نظام التشغيل"
)

funcرئيسي() {
// افتح الأرشيف
zipReader ، يخطئ: = zip. OpenReader ("archive.zip")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

تأجيل zipReader. يغلق()

// استخراج الملفات من الأرشيف
ل _ ، الملف: = يتراوح zipReader. ملف {
zippedFile ، يخطئ: = ملف. يفتح()

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

تأجيل ملف مضغوط. يغلق()

// قم بإنشاء ملف جديد بنفس اسم الملف المضغوط
extractedFile ، يخطئ: = نظام التشغيل. إنشاء ملف. اسم)

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

تأجيل الملف المستخرج. يغلق()

// انسخ البيانات من الملف المضغوط إلى الملف الجديد
_ ، يخطئ = io. نسخ (ملف مستخرج ، ملف مضغوط)

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

FMT. برنتف ("مستخرج٪ s \ n"، ملف. اسم)
}
}

ال OpenReader وظيفة يقرأ أرشيف مضغوط. ال OpenReader تقبل الدالة اسم ملف zip كوسيطة وتقوم بإرجاع نسخة قارئ ملف مضغوط. ال للمدى يعبر loop عبر محتويات الملفات الموجودة في مثيل القارئ. يقوم بإنشاء ملف جديد بنفس اسم الملف الأصلي ، ونسخ محتويات الملف المستخرج إلى الملف الجديد باستخدام io. ينسخ وظيفة.

فك الضغط يدويًا أو برمجيًا - الأمر متروك لك

يعد فك ضغط الملفات برمجيًا أمرًا ملائمًا إذا كان لديك العديد من الملفات أو الأرشيفات لفك ضغطها. قد تقوم أيضًا بدمج وظائف الأرشيف في تطبيقك الرئيسي.

في حالات أخرى ، قد يكون من الأفضل لك استخدام التطبيقات الحالية. يمكنك استخدام تطبيقات مدمجة أو تطبيقات تابعة لجهات خارجية لفك ضغط الأرشيفات على أنظمة التشغيل Windows و macOS و Linux.