2016-05-13 10 views
-1

Ich versuche, den Text von einer file zu erhalten und auf eine textView anzuwenden. Ich werde jedoch mit der file path wie unten gezeigt zurückgegeben.Eine TXT-Datei lesen und in einem textView auf einem anderen Fragment/einer anderen Aktivität anzeigen

@Override 
public void onViewCreated(View view, Bundle savedInstanceState){ 
    tv = (TextView) getActivity().findViewById(R.id.clockText); 
    // Displaying the user details on the screen 
    try { 
     getFileText(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


public void getFileText() throws IOException { 
    File path = getActivity().getExternalFilesDir(null); //sd card 
    File file = new File(path, "alarmString.txt"); //saves in Android/ 
    FileInputStream stream = new FileInputStream(file); 
    try{ 
     stream.read(); 
     tv.setText(file.toString()); 
    } finally { 
     stream.close(); 
    } 
} 

Das Ergebnis "Android/data/foldername/example/files/alarmString.txt" anstelle der Zeit durch den Benutzer in einer anderen Aktivität zum Beispiel erklärt wird: 18:05

Antwort

0

es tun, wie

@Override 
public void onViewCreated(View view, Bundle savedInstanceState){ 
    tv = (TextView) getActivity().findViewById(R.id.clockText); 
    // Displaying the user details on the screen 
    try { 
     tv.setText(getFileText()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


public String getFileText() throws IOException { 
    File path = getActivity().getExternalFilesDir(null); //sd card 
    File file = new File(path, "alarmString.txt"); //saves in Android/ 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
try { 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 

    while (line != null) { 
     sb.append(line); 
     sb.append(System.lineSeparator()); 
     line = br.readLine(); 
    } 

} finally { 
    br.close(); 
} 
return sb.toString() 
} 

folgen Sie haben einen String aus getFileText Funktion zurückzukehren und dann diese Zeichenfolge in die Textansicht einstellen.

0

Sie file.toString setzen den Dateipfad zurückkehrt. Wenn Sie die Daten, die in der Datei vorhanden sind, setzen möchten, müssen Sie stream lesen und an wordbuffer in der while-Schleife anhängen, bis der Text in der Datei übergeht und schließlich stringbuffer.toString auf textview setzen.

1
public String getFileContent(File file) throws IOException { 
    String str = ""; 
    BufferedReader bf = null; 
    try { 
     bf = new BufferedReader(new FileReader(file)); 
     while(bf.ready()) 
      str += bf.readLine(); 
    } catch (FileNotFoundException e){ 
     Log.d("FileNotFound", "Couldn't find the File"); 
    } finally { 
     bf.close(); 
    } 
    return str; 
} 

Verwenden Sie einen BufferedReader und FileReader, anstatt die Bytes zu lesen. Sie haben

stream.read();

was gibt Ihnen ein Byte Ihrer Datei.

tv.setText (file.toString());

setzt Ihre TextView auf die Ausgabe der file.toString() - Methodenausgabe und nicht auf den Dateiinhalt.

Verwandte Themen