2013-08-20 5 views
6

यह नहीं पता कि इसे कैसे पूछें ताकि मैं स्थिति समझाऊंगा।एकल फ़ाइल में निर्देशिका को संपीड़ित करने के तरीके क्या हैं

मुझे कुछ संपीड़ित फ़ाइलों को स्टोर करने की आवश्यकता है। मूल विचार एक फ़ोल्डर बनाने और आवश्यकतानुसार कई संपीड़ित फ़ाइलों को स्टोर करना था और एक ऐसी फ़ाइल भी बनाना था जिसमें प्रत्येक संपीड़ित फ़ाइल के बारे में डेटा हो।

हालांकि, मुझे कई फाइलें बनाने की अनुमति नहीं थी और केवल एक ही होना चाहिए। मैंने एक संपीड़ित फ़ाइल बनाने का निर्णय लिया जिसमें आगे के डेटा के बारे में एक शीर्षलेख है और हेडर के बाद संपीड़ित डेटा रखें। लेकिन इस विकल्प के नुकसान हैं, उदा। इस फ़ाइल को बनाने के बाद इसे संपादित करने में काफी समय लगता है क्योंकि अगर मैं एक और छोटी फ़ाइल जोड़ना चाहता हूं तो भी इसे पूरी तरह से फिर से लिखा जाना चाहिए।

तो, जैसा कि मैंने कल्पना की है, मुझे कुछ विशिष्ट विशेषताओं के साथ फ़ोल्डर बनाने और अंदर की कई फाइलें बनाने की आवश्यकता है। क्या यह भी संभव है?

मैं विंडोज के लिए एक ऐप बना रहा हूं, इसलिए मैं विंडोज़ पर काम करने वाली किसी भी सामग्री का उपयोग कर सकता हूं, और मैं सी ++ के साथ कोडिंग कर रहा हूं।

नोट: एक फ़ाइल की आवश्यकता है क्योंकि, उदाहरण के लिए, इसे ई-मेल के माध्यम से भेजा जाएगा और कई फाइलों को जोड़ना एक आदर्श समाधान नहीं है।

नोट: मुझे संपीड़न के लिए एल्गोरिदम की आवश्यकता नहीं है, मुझे एक फ़ाइल में सबकुछ कुशलतापूर्वक स्टोर करने के लिए कुछ तरीका चाहिए।

+1

आप इसके लिए [संरचित संग्रहण] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa380369%28v=vs.85%29.aspx) का उपयोग कर सकते हैं (लेकिन आप कर सकते हैं उनके साथ नियमित फ़ाइल कार्यों का उपयोग नहीं करते हैं)। – Medinoc

+0

चूंकि यह विंडोज है, इसलिए आप [वैकल्पिक डेटा स्ट्रीम] का उपयोग कर सकते हैं (http://www.irongeek.com/i.php?page=security/altds) – MSalters

+0

जिज्ञासा से, आपको अपने से अधिक फाइलें बनाने की आवश्यकता क्यों है ' फिर से अनुमति दी गई है, और एक फ़ाइल के लिए प्रतिबंध पहली जगह से कहां से आता है?एक जटिल समाधान बनाने से पहले (जो लंबे समय तक बनाए रखना अधिक कठिन होगा), आपने ** (ए) ** सत्यापित किया है कि आप अपने प्रोग्राम को अलग-अलग डिजाइन नहीं कर सकते हैं, या ** (बी) ** कि आप बात नहीं कर सकते आपका ग्राहक आपको एक नियमित निर्देशिका बनाने की इजाजत देता है (यह संभवतया उनके सर्वश्रेष्ठ के लिए होगा)? – stakx

उत्तर

1

आप SQLite डेटाबेस, या एक SQL सर्वर कॉम्पैक्ट संस्करण डेटाबेस (जो एक .sdf फ़ाइल में रहता है) बना सकते हैं, और अपने सभी डेटा को बीएलओबी के रूप में स्टोर कर सकते हैं। डेटाबेस प्रबंधन प्रणाली आपके आवेदन की अन्य बाइनरी के साथ तैनात करने के लिए पर्याप्त आसान होनी चाहिए।

SQL सर्वर कॉम्पैक्ट के मामले में, मुझे बिल्कुल यकीन नहीं है कि यह अप्रबंधित कोड (सी ++) से उपयोग करना कितना आसान है। यह .NET में काफी आसान होगा, लेकिन मुझे पूरा यकीन है कि यह सी ++ के लिए किया जा सकता है, & mdash कुछ शोध लेगा, हालांकि।

कम से कम, this Stack Overflow question एक ओएलई डीबी प्रदाता के माध्यम से सी ++ से ऐसे डेटाबेस से कनेक्ट करने के तरीके में जाता है।

+0

'सी ++' के साथ 'SQLite' का उपयोग करने में कोई समस्या नहीं है, लेकिन यह सुनिश्चित नहीं है कि _ boss_ प्रोजेक्ट में और अधिक चीज़ें जोड़ना चाहेगा , क्योंकि वह मालिक है और कभी-कभी वह एक अच्छा निर्णय लेता है, कभी-कभी इतना अच्छा नहीं, अगर आपको पता है कि मेरा क्या मतलब है :) – ST3

+0

@ user2623967: हाँ, मैं करता हूं। ;-) कभी-कभी यह आपकी समस्या को परियोजना लागतों के संदर्भ में रखने में मदद करता है: पहिया को पुनर्निर्मित करने से आप किसी तृतीय पक्ष लाइब्रेरी पर निर्भरता बचाता है, लेकिन यह आमतौर पर अधिक महंगा होता है (अधिक विकास समय की आवश्यकता होती है)। और रखरखाव के दौरान और अधिक खर्च हो सकता है क्योंकि आपके स्वयं के समाधान में बग हो सकती है। SQLite, OTOH, एक अधिक परिपक्व उत्पाद है और अच्छी तरह से काम करने की उम्मीद की जा सकती है। – stakx

+0

आपका उत्तर शायद सबसे अच्छा है, लेकिन 'SQLite' संपीड़न अनुपात नहीं देता है, और संपीड़न और डिकंप्रेसिंग समय इतना महत्वपूर्ण नहीं है, इसलिए मैं एक एकल फ़ाइल के साथ रहा। – ST3

0

7zip एसडीके का उपयोग करने और ज़िप फ़ाइल में सब कुछ सहेजने के बारे में कैसे? (संपीड़न आदि) अन्य प्रविष्टियों के लिए जानकारी के साथ अपने कस्टम हेडर के लिए एक फ़ाइल प्रविष्टि, और टार फ़ाइल में प्रविष्टियों के रूप में सभी फाइलों:

http://www.7-zip.org/sdk.html

0

एक और विकल्प के रूप में, आप एक टार फ़ाइल इस्तेमाल कर सकते हैं। मुझे नहीं पता कि यह पुस्तकालय कार्यों के साथ एक प्रविष्टि को बदलने के लिए कैसे काम करता है (यहां मैंने जानकारी प्राप्त की है कि कम से कम gnu tar http://www.karkomaonline.com/index.php/2005/03/basic-tar-usage-gnu-tar/ लिनक्स पर कमांड लाइन उपयोगिता के साथ संभव है), लेकिन ऐसा लगता है कि पूरे संग्रह को पुनर्निर्माण किए बिना यह संभव है। मुझे लगता है कि आपको बाद में पर्याप्त खाली स्थान उपलब्ध कराने के लिए बड़ी डमी प्रविष्टियां बनाना होगा, ताकि ये प्रविष्टियां सभी आवश्यक डेटा के साथ प्रतिस्थापित हो सकें।

संबंधित मुद्दे