2011-05-18 17 views
16

मेरे पास मेरे संसाधनों में कच्चे फ़ोल्डर में एक वीडियो फ़ाइल है। मैं फ़ाइल का आकार खोजना चाहता हूं। मैं कोड के इस टुकड़े है:एंड्रॉइड फ़ाइल संसाधन का आकार प्राप्त करें?

Uri filePath = Uri.parse("android.resource://com.android.FileTransfer/" + R.raw.video); 
       File videoFile = new File(filePath.getPath()); 
       Log.v("LOG", "FILE SIZE "+videoFile.length()); 

लेकिन यह हमेशा मुझे देता है कि आकार 0. है मैं गलत क्या कर रहा हूँ?

उत्तर

9

आप संसाधनों के लिए File का उपयोग नहीं कर सकते। संसाधन में InputStream प्राप्त करने के लिए Resources या AssetManager का उपयोग करें, फिर उस पर available() विधि पर कॉल करें।

इस तरह

:

InputStream is = context.getResources().openRawResource(R.raw.nameOfFile); 
int sizeOfInputStram = is.available(); // Get the size of the stream 
+0

धन्यवाद एक बहुत Ebo .. यह मेरी जान बचाई !! – Jana

+9

इस के साथ कभी कोई समस्या नहीं थी ?! इस विधि को 'बाइट्स की अनुमानित संख्या' को वापस पढ़ा जाना चाहिए, जो वास्तविक रूप से वास्तविक फ़ाइल आकार नहीं है, और दस्तावेज़ीकरण स्पष्ट रूप से इसके उपयोग को हतोत्साहित करता है ... http://developer.android.com/reference/java/ io/InputStream.html # उपलब्ध() – psycho

+4

ठीक है, प्रलेखन सामान्य धाराओं को संदर्भित करता है जो डेटा स्ट्रीम जैसे डेटा पुनर्प्राप्त करने में कुछ समय लग सकता है। संसाधन में, सटीक आकार हमेशा ज्ञात और उपलब्ध होता है। – EboMike

20

इस लाइनों का प्रयास करें:

InputStream ins = context.getResources().openRawResource (R.raw.video) 
int videoSize = ins.available(); 
+1

मैं सिर्फ तुमसे प्यार करता हूँ !!! कोड की ये 2 पंक्तियां 7 दिन की समस्या हल करती हैं !!! Thks! ; डी – Matteo

+0

मैंने अभी भी @ EboMike के उत्तर के तहत पोस्ट किए गए प्रश्न/टिप्पणी के समान प्रश्न। इस तरह से कोई समस्या नहीं थी ?? – psycho

+2

क्या 'openRawResource() 'रिटर्न सामान्य' इनपुटस्ट्रीम' नहीं बल्कि एक 'AssetInputStream' है। यह सबक्लास विश्वसनीय जानकारी प्रदान करने में 'उपलब्ध()' और _is_ सक्षम करता है। – caw

19

इस प्रयास करें:

AssetFileDescriptor sampleFD = getResources().openRawResourceFd(R.raw.video); 
long size = sampleFD.getLength() 
+3

यह अन्य उत्तरों की तुलना में अधिक सुरक्षित दिखता है। – Snicolas

+3

+1 लेकिन यह डिफ़ॉल्ट रूप से बहुत से फ़ाइल प्रकारों पर काम नहीं करेगा क्योंकि 'एपेट' उन्हें संपीड़ित करता है - इसके समाधान के लिए यहां: http://stackoverflow.com/questions/19743169/how-can-i प्रयोग-openrawresourcesfd/19743170 – delicateLatticeworkFever

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