2011-03-04 21 views
124

में इनपुटस्ट्रीम कनवर्ट करें मैं एंड्रॉइड में संपत्ति निर्देशिका से इनपुटस्ट्रीम का उपयोग कर लाइन द्वारा टेक्स्ट फ़ाइल लाइन पढ़ने की कोशिश कर रहा हूं।BufferedReader

मैं readLine() का उपयोग करने में सक्षम होने के लिए इनपुट स्ट्रीम को BufferedReader में कनवर्ट करना चाहता हूं।

InputStream is; 
is = myContext.getAssets().open ("file.txt"); 
BufferedReader br = new BufferedReader (is); 

तीसरी पंक्ति निम्न त्रुटि चला जाता है:

मैं निम्नलिखित कोड है

Multiple markers at this line 
The constructor BufferedReader (InputStream) is undefinded.

क्या मैं सी में करने के लिए किया जाएगा कोशिश कर रहा हूँ कुछ की तरह:

StreamReader file; 
file = File.OpenText ("file.txt"); 

line = file.ReadLine(); 
line = file.ReadLine(); 
... 

मैं क्या गलत कर रहा हूं या मुझे यह कैसे करना चाहिए? धन्यवाद!

उत्तर

226

BufferedReader सीधे InputStream को लपेट नहीं सकता है। यह एक और Reader लपेटता है। इस मामले में आप की तरह कुछ करना चाहता हूँ चाहते हैं:

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
+0

हां, एक इनपुटस्ट्रीम रीडर के साथ एक इनपुटस्ट्रीम लपेटना, जिसे बुफर्ड रीडर द्वारा लपेटा गया है, readLine() फ़ंक्शन का उपयोग करने के लिए एक आम "चाल" है। – Anton

+11

मैं अनुशंसा करता हूं: 'BufferedReader br = new BufferedReader (नया इनपुटस्ट्रीम रीडर (है, मानकCharsets.UTF_8)); जावा 7 – brcolow

+0

में जोड़ा गया मानक चार्ज एपीआई स्तर> 1 9 पर काम नहीं करते हैं। @brcolow – Florida

17
InputStream is; 
InputStreamReader r = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(r); 
19

एक BufferedReader निर्माता एक reader तर्क के रूप में, एक InputStream नहीं लेता है। आप पहली बार तो जैसे अपनी स्ट्रीम से एक रीडर बनाना चाहिए,:

Reader reader = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(reader); 

अधिमानतः, आप भी StreamReader निर्माता के लिए एक वर्णसेट या वर्ण एन्कोडिंग नाम प्रदान करें। चूंकि एक धारा केवल बाइट प्रदान करती है, इन्हें पाठ में परिवर्तित करने का अर्थ है एन्कोडिंग ज्ञात होना चाहिए। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो सिस्टम डिफ़ॉल्ट माना जाता है।