مساعدة في إنشاء ملفات الرمز البريدي من .صافي وقراءتها من جافا

StackOverflow https://stackoverflow.com/questions/71000

  •  09-06-2019
  •  | 
  •  

سؤال

أحاول إنشاء ملف مضغوط من .الصافية التي يمكن قراءتها من شفرة جافا.

لقد استعملت SharpZipLib لإنشاء ملف مضغوط ولكن أيضا إذا كان الملف ولدت صالحة وفقا CheckZip وظيفة #ZipLib المكتبة و يمكن بنجاح غير مضغوط بواسطة WinZip أو WinRar أنا دائما الحصول على رسالة خطأ عند محاولة فك الضغط باستخدام Java.Utils.Zip الدرجة في جاوة.

ويبدو أن المشكلة تكون في الخطأ رأس كتبها SharpZipLib لقد نشرت أيضا سؤال على SharpDevelop المنتدى ولكن مع أية نتائج (انظر http://community.sharpdevelop.net/forums/t/8272.aspx لمزيد من المعلومات) ولكن بدون نتيجة.

وقد شخص رمز عينة من ضغط ملف Zip مع .صافي ودي ضغط عليه مع Java.Utils.Zip الفصل ؟

تحياتي ماسيمو

هل كانت مفيدة؟

المحلول

لقد استخدمت DotNetZip المكتبة ويبدو للعمل بشكل صحيح.نموذجية كود:

using (ZipFile zipFile = new ZipFile())
{
  zipFile.AddDirectory(sourceFolderPath);
  zipFile.Save(archiveFolderName);
}

نصائح أخرى

كان عندي نفس المشكلة إنشاء الكود البريدية مع SharpZipLib (أحدث إصدار) واستخراج مع java.utils.zip.

هنا هو ما إصلاح مشكلة بالنسبة لي.كان علي أن قوة استبعاد zip64 الاستخدام:

ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))

s.UseZip64 = UseZip64.Off;

لا يمكن أن تساعد مع SharpZipLib ، ولكن يمكنك محاولة إنشاء ملف مضغوط باستخدام ZipPackage الدرجة النظام.IO.التعبئة والتغليف دون استخدام 3 الجزء المكتبات (يتطلب .صافي 3+).

كنت لا تريد استخدام ZipPackage الطبقة .صافي - ليس تماما zip القياسية نموذج.كذلك ، ولكن ذلك يفترض بنية معينة في الملف ، مع بيان مع اسم معروف ، وهلم جرا.ZipPackage يبدو أنه قد تم تحسين مكتب مستندات XPS مستندات.

مكتبة طرف ثالث ، مثل http://www.codeplex.com/DotNetZip, هو على الأرجح أفضل رهان إذا كنت تفعل الأغراض العامة الرمز البريدي الملفات وتريد جيدة وقابلية التشغيل البيني.

DotNetZip يبني الملفات التي هي قابلة للتشغيل المتبادل مع كل شيء تقريبا ، بما في ذلك جافا java.utils.zip.ولكن كن حذرا باستخدام الميزات التي Java لا يدعم مثل ZIP64 أو يونيكود.ZIP64 هو مفيد فقط كبيرة جدا المحفوظات التي Java لا يدعم بشكل جيد في هذا الوقت ، على ما أعتقد.Java يدعم يونيكود بطريقة معينة ، لذلك إذا كنت تنتج Unicode-بناء ملف ZIP مع DotNetZip, عليك أن تتبع بعض القواعد وسوف تعمل بشكل جيد.

للحكم على ما إذا كان حقا conformant ملف مضغوط ، انظر PKZIP هو .شكل ملف مضغوط مواصفات.

ما يستحق لدي أي مشكلة في استخدام SharpZipLib إلى إنشاء الكود البريدية على الجهاز المحمول Windows وفتحها مع برنامج لضغط الملفات أو نظام التشغيل Windows XP المدمج في المجلدات المضغوطة الميزة, و أيضا لا مشكلة في إنتاج الكود البريدية على سطح المكتب مع SharpZipLib ومعالجتها مع بلدي ZIP استخراج فائدة (أساسا التفاف حول zlib) على الجهاز المحمول.

كان لي مشكلة مماثلة مع حيويي SharpZipLib-مضغوط الملفات على لينكس.أعتقد حلها (حسنا لا تعمل على لينكس و ماك الآن ، اختبرته) ، تحقق من بلدي بلوق وظيفة: http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top