2011-08-24 13 views
18

द्वारा फ़ाइल रीड लाइन कैसे प्राप्त करें मेरे पास एक अलग फ़ाइल में टेक्स्ट वाली एक फ़ाइल है।
मैं पहले लाइन प्रदर्शित करना चाहता हूं, और फिर यदि मैं एक बटन दबाता हूं, तो दूसरी पंक्ति TextView में प्रदर्शित की जानी चाहिए और पहली पंक्ति गायब होनी चाहिए। फिर, अगर मैं इसे फिर से दबाता हूं, तो तीसरी पंक्ति प्रदर्शित की जानी चाहिए और इसी तरह।लाइन

क्या मुझे TextSwitcher या कुछ और उपयोग करना चाहिए? मैं यह कैसे कर सकता हूं?

उत्तर

31

आप के रूप में "android-संपत्ति" यह टैग किया तो मुझे लगता है के लिए अपनी फ़ाइल संपत्ति फ़ोल्डर में है जा रहा हूँ। यहां:

InputStream in; 
BufferedReader reader; 
String line; 
TextView text; 

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    text = (TextView) findViewById(R.id.textView1); 
    in = this.getAssets().open(<your file>); 
    reader = new BufferedReader(new InputStreamReader(in)); 
    line = reader.readLine(); 

    text.setText(line); 
    Button next = (Button) findViewById(R.id.button1); 
    next.setOnClickListener(this); 
} 

public void onClick(View v){ 
    line = reader.readLine(); 
    if (line != null){ 
     text.setText(line); 
    } else { 
     //you may want to close the file now since there's nothing more to be done here. 
    } 
} 

इसे आज़माएं। मैं यह सत्यापित करने में सक्षम नहीं हूं कि यह पूरी तरह से काम करता है, लेकिन मेरा मानना ​​है कि यह सामान्य विचार है जिसे आप अनुसरण करना चाहते हैं। स्वाभाविक रूप से आप किसी भी R.id.textView1/button1 को उन नामों के साथ प्रतिस्थापित करना चाहते हैं जिन्हें आपने अपनी लेआउट फ़ाइल में निर्दिष्ट किया है।

इसके अलावा: अंतरिक्ष के लिए यहां बहुत कम त्रुटि जांच रही है। आप यह जांचना चाहेंगे कि आपकी संपत्ति मौजूद है और मुझे यकीन है कि पढ़ने के लिए फ़ाइल खोलने पर मुझे try/catch ब्लॉक होना चाहिए।

संपादित करें: बिग त्रुटि, यह R.layout नहीं है, यह R.id मैं इस समस्या को ठीक करने के लिए मेरा उत्तर संपादित किया है है।

+1

यदि आपकी मदद मिली है तो आप उत्तर स्वीकार कर प्रतिष्ठा भी प्राप्त कर सकते हैं। – Otra

15

के बाद कोड अपनी जरूरत

try { 
// open the file for reading 
InputStream instream = new FileInputStream("myfilename.txt"); 

// if file the available for reading 
if (instream != null) { 
    // prepare the file for reading 
    InputStreamReader inputreader = new InputStreamReader(instream); 
    BufferedReader buffreader = new BufferedReader(inputreader); 

    String line; 

    // read every line of the file into the line-variable, on line at the time 
    do { 
    line = buffreader.readLine(); 
    // do something with the line 
    } while (line != null); 

} 
} catch (Exception ex) { 
    // print stack trace. 
} finally { 
// close the file. 
instream.close(); 
} 
+0

आपको 'openFileInput() '-method कहां से मिलता है? साथ ही, आपको स्ट्रीम को बंद करने के लिए हमेशा "कोशिश/अंतराल" ब्लॉक का उपयोग करना चाहिए (इसलिए जब वे अपवाद फेंकते हैं तो वे बंद हो जाते हैं) –

+1

सही पद्धति, लेकिन आपने सी-शैली की स्थितियों का उपयोग किया है जो संकलित नहीं होंगे। जावा नहीं बुलियन के लिए शून्य/int/असाइनमेंट इत्यादि से स्वत: रूपांतरण की अनुमति नहीं है, इसलिए 'अगर (instream) 'और' जबकि (line = buffreader.readLine())' को कुछ जैसे बदल दिया जाना चाहिए 'if (instream! = null) 'और' जबकि (buffreader.hasNext()) ' –

+1

BufferedReader के पास हैक्स्ट() फ़ंक्शन नहीं है। बस जांचें कि यह शून्य है। –

0

आप बस एक TextView और एक ButtonView उपयोग कर सकते हैं को पूरा करना चाहिए। BufferedReader का उपयोग करके फ़ाइल पढ़ें, यह आपको एक-एक करके लाइनों को पढ़ने के लिए एक अच्छा एपीआई प्रदान करेगा। बटन पर क्लिक करने पर settext का उपयोग करके टेक्स्टव्यू का टेक्स्ट बदलें।

आप सभी फ़ाइल सामग्री को पढ़ने और इसे स्ट्रिंग्स की सूची में डालने पर भी विचार कर सकते हैं, यदि आपकी फ़ाइल बहुत बड़ी नहीं है तो यह क्लीनर हो सकता है।

सादर, स्टीफन