जे 2 एमई में, मैं उस तरह यह कर दिया है: getClass().getResourceAsStream("/raw_resources.dat");
एंड्रॉइड कच्चे संसाधनों तक पहुंच कैसे प्राप्त करें जिन्हें मैंने res फ़ोल्डर में रखा है?
लेकिन एंड्रॉयड में, मैं हमेशा इस पर अशक्त हो, क्यों?
जे 2 एमई में, मैं उस तरह यह कर दिया है: getClass().getResourceAsStream("/raw_resources.dat");
एंड्रॉइड कच्चे संसाधनों तक पहुंच कैसे प्राप्त करें जिन्हें मैंने res फ़ोल्डर में रखा है?
लेकिन एंड्रॉयड में, मैं हमेशा इस पर अशक्त हो, क्यों?
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
कृपया समूह (नीचे) द्वारा उत्तर देखें, यह अधिक सटीक है। – BoD
एक साइड नोट के रूप में, कच्चे फ़ोल्डर फ़ाइल नाम से एक्सेस की अनुमति नहीं देता है। कुछ ऐप्स को गतिशील फ़ाइल नामों की आवश्यकता होती है, इसलिए ऐसे मामलों में 'संपत्ति' फ़ोल्डर उपयोगी होता है – Caner
उसने संपत्ति के बारे में नहीं पूछा/उसने रेस/कच्चे/ –
कच्ची फ़ाइलों के लिए, आपको Res निर्देशिका के अंदर कच्चे फ़ोल्डर बनाने पर विचार करना चाहिए और फिर अपनी गतिविधि से getResources().openRawResource(resourceName)
पर कॉल करना चाहिए।
समूह, आपके उत्तर के लिए धन्यवाद, अगर मैं ऐसा करता हूं, तो मुझे एंड्रॉइड एक्सएमएल प्रारूप समस्या में त्रुटियां मिली हैं, क्योंकि मैं मानक एक्सएमएल का उपयोग नहीं करता हूं, क्या इसका उपयोग वास्तव में कच्चे डेटा के रूप में करने का दूसरा तरीका है? – Arkaha
गैर मानक एक्सएमएल द्वारा आपका क्या मतलब है? आप एक्सएमएल फाइलों को संपत्तियों में भी बंडल कर सकते हैं। – Samuh
समूह, मैं j2me एप्लिकेशन पोर्ट कर रहा हूं, और इसमें एक्सटेंशन * .xml के साथ फाइलें हैं, ऐसी फाइलों की सामग्री xml के समान ही है, लेकिन समान नहीं है, इस फाइल पर चिल्लाना ग्रहण करता है, क्योंकि यह इसे संकलित नहीं कर सकता है। शायद मैं इस फाइल पर किसी प्रकार का "अनदेखा" सेट कर सकता हूं? लेकिन मुझे नहीं पता .. – Arkaha
TextView txtvw = (TextView)findViewById(R.id.TextView01);
txtvw.setText(readTxt());
private String readTxt()
{
InputStream raw = getResources().openRawResource(R.raw.hello);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try
{
i = raw.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = raw.read();
}
raw.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArrayOutputStream.toString();
}
TextView01 :: LinearLayout में txtview हैलो :: रेस में .txt फ़ाइल/कच्चे फ़ोल्डर (यू wel के रूप में ny othr फ़ोल्डर तक पहुँच सकते हैं)
प्रथम 2 लाइनों 2 onCreate में लिखे गए हैं() विधि
बाकी कक्षा विस्तार गतिविधि में लिखा जाना है !!
हम छवि नाम का उपयोग drawable या कच्चे फ़ोल्डर से छवि प्राप्त करने के लिए कुछ स्थितियों में बजाय अगर = getResources में उत्पन्न आईडी
// Image View Object
mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for to Fetch image from resourse
Context mContext=getApplicationContext();
// getResources().getIdentifier("image_name","res_folder_name", package_name);
// find out below example
int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
// now we will get contsant id for that image
mIv.setBackgroundResource(i);
यह पंक्ति: int i = mContext.getResources()। GetIdentifier (" ic_launcher "," कच्चे ", mContext.getPackageName()); गोल्ड – Radu
InputStream() openRawResource (ResourceName)।
यह सही तरीके से काम करेगा। इससे पहले आपको कच्चे संसाधन में एक्सएमएल फ़ाइल/टेक्स्ट फ़ाइल बनाना होगा। फिर यह सुलभ होगा।
लेआउट फ़ाइल या छवि नामों में कोई त्रुटि होने पर com.andriod.R को आयात किया जाएगा। तो आपको पैकेज को सही तरीके से आयात करना होगा, फिर केवल कच्ची फ़ाइल ही पहुंच योग्य होगी।
openRawResource() को एक int की आवश्यकता नहीं है, एक स्ट्रिंग नहीं है http://developer.android.com/reference/android/content/res/Resources.html#openRawResource(int) – mmathieum
यह उन संसाधनों पर भी काम करेगा जो मौजूद हैं खींचने योग्य फ़ोल्डर? –
int के रूप में "R.raw.NameOfResource" का उपयोग करें। – CristianCV
getClass().getResourcesAsStream()
एंड्रॉइड पर ठीक काम करता है। बस सुनिश्चित करें कि आप जिस फ़ाइल को खोलने की कोशिश कर रहे हैं वह आपके एपीके में सही ढंग से एम्बेडेड है (एपीके को ज़िप के रूप में खोलें)।
आम तौर पर एंड्रॉइड पर आप assets
निर्देशिका में ऐसी फ़ाइलें डालते हैं। तो अगर आप अपनी परियोजना के assets
उपनिर्देशिका में raw_resources.dat
शब्दों में कहें, वह APK के assets
निर्देशिका में खत्म हो जाएगा और आप का उपयोग कर सकते हैं:
getClass().getResourcesAsStream("/assets/raw_resources.dat");
यह भी निर्माण प्रक्रिया को अनुकूलित करने के लिए संभव है कि फ़ाइल एपीके में assets
निर्देशिका में नहीं है।
एक अग्रिम दृष्टिकोण एक्सटेंशन समारोह उपयोग कर रहा है
fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
return resources.openRawResource(resourceId)
}
एक और दिलचस्प बात यह है
उदाहरण के लिए आप बिना सुरुचिपूर्ण ढंग से इनपुट स्ट्रीम के साथ काम कर सकते हैं विस्तार समारोह उपयोग कि closeable दायरे में परिभाषित किया जाता है अपवाद और स्मृति प्रबंधन
fun Context.readRaw(@RawRes resourceId: Int): String {
return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}
एंड्रोई के लिए प्रोग्रामिंग के बीच एक बड़ा अंतर है डी और जे 2 एमई – Janusz
एंड्रॉइड और जे 2 एमई पर समान रूप से काम करने वाली किसी चीज़ के बारे में एक प्रश्न पर ऐसी टिप्पणी पढ़ने के लिए मजाकिया है। मेरा जवाब देखें – 0xF