# java.io.* BufferedReader to String



## sippi287 (14. Dez 2007)

Hallo,

mein erster Post hier. Ich hoffe ihr könnt mir helfen. Folgendes Ich möchte einen Text aus einer Datei lesen. Ansich is das kein Problem und funktioniert schon ganz gut. Der Text wird derzeit aus der console ausgegeben. Nun möchte ich den ausgelesenen Text gern in einer Variable vom Typ String speichern, um diese an eine Textarea zu übergeben. Meine bisherige Methode zum auslesen der Datei sieht so aus. Ich lass das was ich mir gedacht hab betreffend des Strings mal auskommentiert. Ich würd mich freuen, wenn jemand weiss, wie ich das problem beheben kann.


```
public static void readStoryline(){
		
		BufferedReader story;
		String storyline;
		try{
			story = new BufferedReader(new FileReader("C:\\workspace\\Zuul\\Files\\storyline.dat"));
			int c = story.read();
			while(c != -1){
				System.out.print((char)c);
				[b]//c.toString();[/b] 
                                //Hier müsste jetzt die belegen folgen.
				c = story.read();
			}
			
			[b]//txtField.setText(storyline);[/b]
			story.close();
			System.out.print(" Datei ausgelesen\n");
			System.out.print(storyline);
			
		}catch(FileNotFoundException f){System.out.print("Datei nicht gefunden");}
		catch(IOException e){}
	}
```

Bekanntlich funktionieren cast von char auf String nicht. Hat jemand ne Idee? Danke Danke Danke schonmal.


----------



## The_S (14. Dez 2007)

äh


```
String temp = null;
StringBuffer text = new StringBuffer();
while ((temp = story.readLine()) != null) {
   text.append(temp + "\n");
}
deinTextArea.setText(text.toString());
```


----------



## sippi287 (14. Dez 2007)

StringBuffer kennt nur leider nicht die Mehtode read() oder readLine().


----------



## ARadauer (14. Dez 2007)

das ist auch gut so, und hobbit ruft auch niergends ein read von StringBuffer auf.
bitte den code den mal als antwort bekommt auch lsesen


----------



## sippi287 (14. Dez 2007)

Ich habe vorhin den code mal mit meinem gemerged, da entstanden nicht nachvollziehbare Fehler. Habe dann nchmal was versucht. Das scheint auch zu funktionieren. Nur bekomme trotzdem nen fehler:


```
BufferedReader story;
	      String path = "C:\\workspace\\Zuul\\Files\\storyline.dat";
	      try{
	    	  String temp = null;
	    	  StringBuffer text = new StringBuffer(path);
	    	  while ((temp = story.readLine()) != null) {// hier taucht der fehler auf variable story wäre nicht initialisiert
	    	     text.append(temp + "\n");
	    	  }
	    	  txtField.setText(text.toString());
```

Habe den code mal noch bisschen angepasst. Was meint ihr? Und danke für die nerven die ihr lasst^^


----------



## Verjigorm (14. Dez 2007)

Stringbuffer liest keine Dateien ....
sondern buffert Strings 

deinen "path" musste dem BufferedReader übergeben mit einem
Filereader zusammen, vielleicht machste erstmal einen Schritt nach dem anderen

also so in etwa:


```
String path = "C:\\workspace\\Zuul\\Files\\storyline.dat";
         BufferedReader story = new BufferedReader(new FileReader(path));
         try{
            String temp = null;
            StringBuffer text = new StringBuffer();
            while ((temp = story.readLine()) != null) {// hier taucht der fehler auf variable story wäre nicht initialisiert
               text.append(temp + "\n");
            }
            txtField.setText(text.toString());
```


----------



## sippi287 (14. Dez 2007)

doh!... da hätte ich auch echt selbst drauf kommen können. Danke jungs, danke. Ich hab mir da schon 2 Tage den Kopf drüber zermartert.


----------



## Verjigorm (14. Dez 2007)

nicht vergessen den Reader auch wieder zu schliessen (im try-block, nach der schleife)

story.close();


----------



## sippi287 (14. Dez 2007)

Danke, hat ich schon dran gedacht^^. Aber mal noch was anderes. Der Text hat ne gewisse formatierung. Also Zeilenumbrüche zum beispiel Überschrift und 2 zeilen frei dann text. Ich bin jetzt soweit, das ich erstmal rausgefunden hab, dass ich das an ein StyledDocument übergeben muss. In dem Text, sind keine Farben, andere Schriftarten oder sonstiges. nur die Zeilenumbrüche hauen halt nich hin. 


```
txtPane.setDocument();
```

setzt ja den Document Typ wenn ich das auf der Swing Seite von sun richtig gelesen habe. Aber dann reicht entweder mein englisch nicht, oder ich bin einfach zu doof dazu^^. Hat wer ne Idee wie ich die Zeilenumbrüche da rein bekomme?

Danke schonmal


----------



## sippi287 (15. Dez 2007)

Hat denn keiner ne Idee?


----------



## JPKI (15. Dez 2007)

Probier mal in der Schleife statt

```
text.append(temp + "\n");
```
mal

```
text.append(temp + System.getProperty("line.separator"));
```


----------



## sippi287 (15. Dez 2007)

Danke, dass hat ja mal auf Anhieb funktioniert. Sehr geil. Danke Thread kann geschlossen werden.


----------



## The_S (17. Dez 2007)

schließ ihn mit nem häkchen doch selber :roll:


----------

