Textdatei in TextView anzeigen lassen - komm nicht weiter...

  • Antworten:10
Ludwig H.
  • Forum-Beiträge: 3.256

01.05.2011, 16:21:38 via Website

Hi,

ich versuche gerade eine Textdatei von der SD Karte in einer TextView anzuzeigen:
1String source = "/sdcard/test.txt";
2
3int numberOfBytes;
4byte[] buffer = new byte[32768];
5FileInputStream in = new FileInputStream(source);
6while ( (numberOfBytes = in.read(buffer)) >0 ) {
7Resources res = getResources();
8String textfeld = String.format(res.getString(R.string.textfeld));
9 textfeld.setText(buffer, 0, numberOfBytes);
10 }
11 in.close();

Jetzt meckert Eclipse bei dem setText();
Hab auch schon einige Codeschnipsel im Netz angeguckt, bin aber nicht wirklich weitergekommen.
Und noch so am Rande, könnte man damit dann auch .conf Dateien von in der /data/ Partition auslesen?

Danke schonmal
Ludwig

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

01.05.2011, 18:11:08 via Website

ja, und wo ist deine textview?

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

01.05.2011, 18:18:15 via Website

oh, sorry, die hab ich vorher per
1TextView testfeld = (TextView) findViewById(R.id.testfeld);
eingebunden

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

01.05.2011, 18:40:19 via Website

Dann sollte Zeile 9 eigentlich testfeld.setText heissen?

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

01.05.2011, 18:44:28 via Website

Oh ja, heißt es auch. :D Also so stehts jetzt drin:
1TextView testfeld = (TextView) findViewById(R.id.testfeld);
2
3 String source = "/sdcard/test.txt";
4
5 int numberOfBytes;
6 byte[] buffer = new byte[32768];
7 FileInputStream in = new FileInputStream(source);
8 while ( (numberOfBytes = in.read(buffer)) >0 ) {
9 Resources res = getResources();
10 String ergebnis = String.format(res.getString(R.string.testfeld));
11 testfeld.setText(buffer, 0, numberOfBytes);
12 }
13 in.close();

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

01.05.2011, 19:01:34 via Website

Klar das es nicht funktioniert Luhu ... aber Eclipse sagt Dir doch genau was dem Compiler an der Stelle nicht passt.

The method setText(char[], int, int) in the type TextView is not applicable for the arguments (byte[], int, int)

Soll heißen : buffer ist kein array of char sondern ein Array of byte

— geändert am 01.05.2011, 19:02:33

lg Voss

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

01.05.2011, 19:04:22 via App

Ja klar, ich weiß ja, dass die Argumente nicht passen, aber ich weiß nicht wo ich das dann hinschreiben muss :D

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

01.05.2011, 19:11:44 via Website

Die Frage ist warum Du das unbedingt als Bytes einlesen willst und nicht als String, wie man sich das doch in einer Text Datei erwarten würde.

lg Voss

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

01.05.2011, 20:21:48 via App

Hm, wenn du das so sagst, hört sich das natürlich besser an :D
Ich hab mir das aus meinen JavaGrundlagenbuch zusammengebastelt...

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

04.05.2011, 21:01:55 via Website

Ansgar M
Danke, hab das jetzt mal ausprobiert, aber das funktioniert leider nicht so...
1// try opening the myfilename.txt
2 try {
3 // open the file for reading
4 InputStream instream = openFileInput("myfilename.txt");
5
6 // if file the available for reading
7 if (instream) {
8 // prepare the file for reading
9 InputStreamReader inputreader = new InputStreamReader(instream);
10 BufferedReader buffreader = new BufferedReader(inputreader);
11
12 String line;
13
14 // read every line of the file into the line-variable, on line at the time
15 while (( line = buffreader.readLine())) {
16 // do something with the settings from the file
17 }
18
19 }
20
21 // close the file again
22 instream.close();
23 } catch (java.io.FileNotFoundException e) {
24 // do something if the myfilename.txt does not exits
25 }

Ich bekomme in Zeile 7 und 15 bei den Abfragen Fehlermeldungen "cannot convert String to boolean". Ist ja eigentlich auch logisch :D
Weiß aber nicht wie man das dann sonst hinschreiben sollte...

Antworten