Intereting Posts
एंड्रॉइड ग्रिडव्यू लेआउट इंडेक्स से पंक्ति और कॉलम में परिवर्तित होता है एक ListView में हेडर देखें ऊँचाई एंड्रॉइड डीबगिंग, कैसे? एंड्रॉइड: रैपल पृष्ठभूमि प्रोग्रामेटिक रूप से एंड्रॉइड पर फायरबेज और नया Google साइन-इन कोटलिन का उपयोग करके कस्टम स्वाद में क्लासनोटफ़ाउंड अपेशन फोनगैप एंड्रॉएड एजेक्स अनुरोध प्राप्त करने के लिए काम करता है लेकिन पोस्ट नहीं एंड्रॉइड: वेब सर्वर में स्थित फाइल को कैसे जानना चाहिए? एंड्रॉइड पर यूएसबी ड्राइविंग – नए डिवाइस ग्रहण के दौरान प्रोगुआर्ड ओबस्कुसेशन के बाद Google मानचित्र लोड नहीं किए गए हैं शब्द परिभाषाओं की खोज कैसे करें? एंड्रॉइड: ए-जीपीएस डेटा रीसेट और डाउनलोड कैसे करें? एंड्रॉइड में गोलाकार फ़िल्टर संवाद संवाद के साथ फ्रेगमेंट ट्रांजेक्शन का उपयोग करना बेस एडेप्टर ऑन-आईटेमक्लिकलाइस्टर कभी नहीं बुलाया

मैं openRawResourcesFd () का उपयोग कैसे कर सकता हूं?

मेरे पास फाइलें res/raw जो मैं इस तरह खोलना चाहूंगा:

 AssetFileDescriptor afd = getResources().openRawResourcesFd(); 

यह अनुमति देता है, उदाहरण के लिए, निश्चित फ़ाइल का आकार afd.getLength() माध्यम से afd.getLength() , जो InputStream.available() वादा नहीं करता है, भले ही यह आमतौर पर काम करता है।

हालांकि, जब मैं कोशिश करता हूं यह विफल रहता है:

java.io.FileNotFoundException: यह फ़ाइल एक फाइल डिस्क्रिप्टर के रूप में नहीं खोई जा सकती; यह शायद संकुचित है

ये सिर्फ छोटी पाठ फ़ाइलें हैं समस्या क्या है?

Solutions Collecting From Web of "मैं openRawResourcesFd () का उपयोग कैसे कर सकता हूं?"

aapt बिल्ड संसाधन के हिस्से के रूप में अधिकतर संसाधनों को aapt करते हैं। इस लेख के अनुसार जो एप्ट स्रोत का उद्धरण है, अपवाद निम्न हैं:

 /* these formats are already compressed, or don't compress well */ static const char* kNoCompressExt[] = { ".jpg", ".jpeg", ".png", ".gif", ".wav", ".mp2", ".mp3", ".ogg", ".aac", ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".amr", ".awb", ".wma", ".wmv" }; 

इसलिए इस समस्या को हल करने का एक तरीका यह है कि उन फ़ाइलों में से एक के साथ अपनी फ़ाइलों का नाम बदलकर एएपीटी को धोखा देना है।

यह बहुत संतोषजनक नहीं लग सकता है। यदि आप इसके बजाय अपवादों की सूची में एक एक्सटेंशन जोड़ना चाहते हैं, तो आप [sdk]/tools/ant/build.xml को संपादित कर सकते हैं nocompress लिए फ़ाइल खोजें:

  <aapt executable="${aapt}" command="package" versioncode="${version.code}" versionname="${version.name}" debug="${build.is.packaging.debug}" manifest="${out.manifest.abs.file}" assets="${asset.absolute.dir}" androidjar="${project.target.android.jar}" apkfolder="${out.absolute.dir}" nocrunch="${build.packaging.nocrunch}" resourcefilename="${resource.package.file.name}" resourcefilter="${aapt.resource.filter}" libraryResFolderPathRefid="project.library.res.folder.path" libraryPackagesRefid="project.library.packages" libraryRFileRefid="project.library.bin.r.file.path" previousBuildType="${build.last.target}" buildType="${build.target}" ignoreAssets="${aapt.ignore.assets}"> <res path="${out.res.absolute.dir}" /> <res path="${resource.absolute.dir}" /> <nocompress extension="txt"/> <!-- <nocompress /> forces no compression on any files in assets or res/raw --> <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw --> </aapt> 

नीचे दिए गए टिप्पणियां स्वयं व्याख्यात्मक हैं। मैंने txt लिए अपवाद डाला। सूचना आप सभी को एक साथ सम्पीडन भी बंद कर सकते हैं।

वैकल्पिक रूप से, एक विशेष एक्सटेंशन बनाएं:

 <nocompress extension="nocomp"> 

और अपनी फ़ाइलों का नाम बदलें, जैसे, whatever.txt.nocomp इस तरह आप विशेष फ़ाइलों को छोड़कर सब कुछ के लिए संपीड़न को छोड़ सकते हैं