خطأ غريب في Sharpziplib - كان الحجم X ، لكنني توقعت Y
-
06-07-2019 - |
سؤال
أحصل على خطأ عندما أستخدم Sharpziplib. لدي رمز يبدو
FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");
الذي يبدو أنه صحيح. ومع ذلك ، أحصل على zipexception يدعو ذلك
size was 0, but I expected 54
لا فكرة لدي عن معنى ذلك. أي شخص لديه أي نظرة ثاقبة ، أو رابط لمستند API من نوع ما؟
المحلول
اتضح أن القضية كانت على النحو التالي. كنت أحاول إنشاء ملف .zip لجميع العناصر في دليل معين ، ووضع ملف .zip في الدليل. من الواضح أن الطريقة التي تعمل بها هذه المكتبة ، يتم إنشاء ملف .zip ، ثم يتم قراءة الدليل في ملف لكل ملف ، ويكتب إلى ملف .zip. حدث الخطأ عندما حاول إضافة ملف .zip نفسه إلى الرمز البريدي! ربما تم رفض الوصول إلى الملف أو أي شيء في تلك المرحلة ، مما أدى إلى الخطأ أعلاه. كان الإصلاح البسيط هو إنشاء ملف .zip في دليل مختلف.
نصائح أخرى
هنا هي روابط إلى رمز المصدر الخاص بهم وملف مساعدة مع وثائق API.
لقد قمت بإصلاح مشكلة مماثلة من خلال التعامل معها داخل معالج أحداث ProgressHandler وتمرير Zipentry كمرسل. نظرًا لأن هذا هو حالة الخطأ ، لذلك يجب أن نتوقف عن معالجة ملف zip eContinuerUnning
private void ProcessFileHandler(object sender, ProgressEventArgs e)
{
ZipEntry newEntry = sender as ZipEntry;
if (newEntry != null)
{
newEntry.Size = e.Processed;
}
e.ContinueRunning = keepRunning;
return;
}