سؤال

أحصل على خطأ عندما أستخدم 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;
         }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top