यहाँ मैं बफ़र्ड पढ़ने के लिए एक गतिविधि में क्या कर रहा हूँ, अपनी आवश्यकताओं का मिलान करने के लिए विस्तार / संशोधन करें
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
संपादित करें: यदि आपका प्रश्न किसी गतिविधि के बाहर करने का तरीका है, तो मेरा उत्तर शायद बेकार है। यदि आपका सवाल बस एसेट से फाइल पढ़ने का है तो उत्तर ऊपर है।
अद्यतन :
टाइप निर्दिष्ट करने वाली फ़ाइल खोलने के लिए केवल इनपुटस्ट्रीमरएडर कॉल में टाइप करें।
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt"), "UTF-8"));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
संपादित करें
जैसा कि @Stan टिप्पणी में कहता है, जो कोड मैं दे रहा हूं वह लाइनों को समेटने वाला नहीं है। mLineहर पास को बदल दिया जाता है। इसलिए मैंने लिखा है //process line। मुझे लगता है कि फ़ाइल में किसी प्रकार का डेटा (यानी एक संपर्क सूची) है और प्रत्येक पंक्ति को अलग से संसाधित किया जाना चाहिए।
यदि आप किसी भी तरह की प्रोसेसिंग के बिना फाइल लोड करना चाहते हैं, तो आपको mLineप्रत्येक पास का उपयोग करके StringBuilder()और पास करके प्रत्येक पास में योग करना होगा।
पुराने संस्करण
@Vincent की टिप्पणी के अनुसार मैंने finallyब्लॉक को जोड़ा ।
यह भी ध्यान रखें कि जावा 7 में और ऊपरी आप उपयोग कर सकते हैं try-with-resourcesका उपयोग करने के AutoCloseableलिए और Closeableहाल ही में जावा के सुविधाएँ।
संदर्भ
कि बाहर एक टिप्पणी @LunarWatcher अंक में getAssets()एक है classमें context। इसलिए, यदि आप इसे कॉल करते हैं, तो आपको इसे activityसंदर्भित करने और गतिविधि के संदर्भ संदर्भ को पास करने की आवश्यकता है।
ContextInstance.getAssets();
यह @Maneesh के उत्तर में बताया गया है। तो अगर यह आपके लिए उपयोगी है, तो उसके उत्तर को रोकें क्योंकि वह उसे इंगित करता है।