# komplette Textdatei einlesen



## Donut (11. Okt 2004)

das thema wurde hier zwar schon behandelt, weitergebracht ht mich das aber nicht.
Was ich erreichen will, ist, dass eine Textdatei pratisch 1:1 in einem Applet erscheint.
Als wo n zeilenumbruch ist, soll im applet auch eine hin.

Das sollte man am besten doch zeilenweise einlesen und zeilenweise ausgeben .. nur das einlesen hat bei mir net funktioniert...


----------



## dotlens (11. Okt 2004)

versuchsmal hiermit. das buchstabe für buchstabe benötigst du vermutlich nicht...

```
try {
			FileReader f0 = new FileReader(fileName);//hier kommt dein filenam
													 // rein
			BufferedReader f = new BufferedReader(f0);

			String line;
			int zeilenCounter = 1;

			// ---------- Zeile für Zeile ----------
			while ((line = f.readLine()) != null) {

				//hier kannst du deinen code reinschreiben.
				//in der String-variable "line" wird immer die aktuelle zeile
				// gespeichert

				// ---------- Buchstabe für Buchstabe ----------
				for (int i = 0; i < line.length(); i++) {

				}
			}
		}
		catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
```


----------



## meez (11. Okt 2004)

ist ein wenig unperformant, so wie dotlens das gemach hat:


```
FileReader in = new FileReader(<datei>);
for (int n;(n = in.read()) != -1;) {
  char c = (char) n;
  //Mach irgendetwas mit char c....
}
in.close();
```


----------



## dotlens (11. Okt 2004)

wieso ist das unperformat?
will was dazulernen


----------



## meez (11. Okt 2004)

Weil du einen String (char-Array) einliest, und dann durch diesen Char-Array durchgehst.
Es geht einiges schneller, die bytes direkt zu lesen...


----------



## Donut (11. Okt 2004)

so ..
ich hab beides mal ausprobiert....
bei deiner Lösung, meez, entsteht das Problem das wieder die Zeilenumbrüche nicht gespeichert werden ... er speichert da also im einer zeile....

das funktioniert nicht, wenn ich f.read(); direkt in einen String schreibe, da kommen ints raus  :? 
wie muss ich das denn noch umwandeln?


----------



## meez (11. Okt 2004)

Die Zeilenumbrüche haben einfach die Zahl 10...
Am Besten nimmst du einen StringBuffer, um es in einen String zu bringen:


```
StringBuffer buffer = new StringBuffer();
FileReader in = new FileReader(<datei>);
for (int n;(n = in.read()) != -1;buffer.append((char) n));
in.close(); 


String s = buffer.toString();
```


----------



## Donut (11. Okt 2004)

auch wenn ich so mach, gehts net:

```
String zusammen = "";
		try
		{
			FileReader in = new FileReader(Dateipfade[0]);
		
			StringBuffer buffer = new StringBuffer();
		
			for(int n;(n = in.read()) != -1;buffer.append((char) n))
			{
				char c = (char) n;
				zusammen += buffer.toString();
			}
			in.close();
 
		}
		catch(FileNotFoundException e)
		{
		}
		catch(IOException e)
		{
		}
```


----------



## meez (11. Okt 2004)

Warum mach ich eigentlich ein Beispiel?

Aber ich hab ja Geduld...:?


```
String zusammen = "";
      try
      {
        StringBuffer buffer = new StringBuffer();
       FileReader in = new FileReader(Dateipfade[0]);
       for (int n;(n = in.read()) != -1;buffer.append((char) n));
       in.close();

        zusammen = buffer.toString(); 
      }
      catch(FileNotFoundException e)
      {
      }
      catch(IOException e)
      {
      }
```


----------



## Donut (11. Okt 2004)

dafür mag ich dicht jetzt schon 

jetzt kommt mir ein anderer gedanke:
also wenn ich einen mehrzeiligen String auf einen Canvas zeichnen will, kann es sein, dass /n ignoriet wird und ein umbruch, der in diesem String gespeichert is, auch übergangen wird?

ich hab deinen Code eingefügt und meine Textdatei sieht so aus:


> Bla! /n
> ...
> Blu!
> rsdghedknkh



Die ausgabe ist aber:


> Bla! /n...Blu!rsdghedknkh



die Methode zum zeichnen:

```
Graphics g = getGraphics();
g.setFont(<Schriftart>);
g.setColor(<Schriftfarbe>);
g.drawString(zusammen, 221, 156);
```


----------



## Illuvatar (11. Okt 2004)

die drawString Methode ignoriert Zeilenumbrüche. Nimm ein JLabel oder so etwas.


----------



## Donut (11. Okt 2004)

hmm danke an alle .. dann muss ich das ganz anders konzipieren


----------



## Icewind (11. Okt 2004)

hm ignoriert ein JLabel nicht auch ein /n ???

is mir bis jetzt so vorgekommen...


----------



## meez (12. Okt 2004)

Ja..Nimm TextAreas...


----------



## foobar (12. Okt 2004)

> hm ignoriert ein JLabel nicht auch ein /n ???


Du kannst in einem JLabel Html verwenden, dann klappts auch mit den Zeilenumbrüchen ;-)


```
JLabel label = new JLabel("<html>zeile 1
zeile 2</html>");
```


----------



## thE_29 (12. Okt 2004)

das musst du bei Buttons usw auch so machen 

habe auch lange gesucht, bis ich das rausgefunden habe


----------

