# txt printen



## hans-sonny (25. Jun 2012)

hi ist es möglich eine txt datei einzulesen und zeile für zeile zu mit println auszugeben?


----------



## Gast2 (25. Jun 2012)

Jep, das geht.


----------



## achillesat (25. Jun 2012)

Beispiel:



```
try {
		BufferedReader in = new BufferedReader(new FileReader("text.txt"));
		String zeile = null;
		while ((zeile = in.readLine()) != null) {
			System.out.println("Gelesene Zeile: " + zeile);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
```


----------



## hans-sonny (25. Jun 2012)

angenommen ich will das für eine html datei machen? geht das auch dass ich dann nur den body teil printe?


----------



## Gast2 (25. Jun 2012)

Jep, das geht auch 
Bis zum <body> Tag alles webschmeißen und solange ausgeben bis </body> kommt.


----------



## hans-sonny (25. Jun 2012)

dann gibts mir aber den ganzen html code aus mit allen tags oder? kann ich die auch maskieren?


----------



## Gast2 (25. Jun 2012)

Formulier doch bitte mal genau was du erreichen willst. So stückchenhaft bringt uns das nicht wirklich ans Ziel.


----------



## hans-sonny (25. Jun 2012)

also ich hab ein spiel das hat sowohl eine gui als auch eine tui zum spielen

in der gui lade ich die regeln aus einer html datei ein 

nun würde ich für die tui gerne die selbe html datei verwenden um die regeln zu printen


----------



## Gast2 (25. Jun 2012)

Das könnte klappen wenn du alle <...> Tags rausfilterst. Allerdings geht dann natürlich auch jede Formatierung verloren. In nem html File müssen für sichtbare Zeilenumbrüche ja nicht zwingend Zeilenumbrüche in der Datei sein, evtl. kannst du dann da Probleme bekommen.

Kannst du mal nen kleinen Ausschnitt der Datei posten?


----------



## timbeau (25. Jun 2012)

Printen, laden? Was denn nun? 

Warum für sowas überhaupt html?


----------



## hans-sonny (25. Jun 2012)

weil ichs da schön formatiert hab mit li etc ^^ ...

egal ich mach die nochmal in eine text datei geht jetzt am schnellsten^^


----------



## Wishmaster51 (25. Jun 2012)

achillesat hat gesagt.:


> Beispiel:
> 
> 
> 
> ...




```
in.close()
```
 nicht vergessen


----------



## hans-sonny (25. Jun 2012)

```
public static void stringRules() {
        try {
            FileReader rules = new FileReader("/files/uno_rules_en.txt");
            try (BufferedReader in = new BufferedReader(rules)) {
                String zeile = null;
                while ((zeile = in.readLine()) != null) {
                    System.out.println(zeile);
                }
            }
        } catch (IOException e) {
            logger.ErrorLog.errorLog("Error while reading rules: " + e);
```


ich probiere es so .... aber es findet die datei nicht ... was nicht sein kann weil die im selben pfad liegt wie ich die html datei auch liegen hab ... und der aufruf von der html geht ...


----------



## Gast2 (25. Jun 2012)

Wie schaut deine Ordnerstruktur aus? Versuchs mal ohne den / vorne dran.


----------



## timbeau (25. Jun 2012)

Kann wohl sein, kannst du die Datei mit diesem Pfad über nen Editor öffnen? Bei sowas immer erst Pfade ganz genau überprüfen. Ich glaube nicht, dass die Datei im Root-VErzeichnis ("/") liegt.


----------



## Wishmaster51 (25. Jun 2012)

hans-sonny hat gesagt.:


> ich probiere es so .... aber es findet die datei nicht ... was nicht sein kann weil die im selben pfad liegt wie ich die html datei auch liegen hab ... und der aufruf von der html geht ...


BTW, wie in meinem vorherigen Beitrag schon gesagt: 
	
	
	
	





```
in.close()
```
 nicht vergessen


----------



## hans-sonny (25. Jun 2012)

die datei liegt in dem package files


das ist der code: 

```
public static void stringRules() {
        try {
            FileReader rules = new FileReader("/files/uno_rules_en.txt");
            try (BufferedReader in = new BufferedReader(rules)) {
                String zeile = null;
                while ((zeile = in.readLine()) != null) {
                    System.out.println(zeile);
                }
            }
        } catch (IOException e) {
            logger.ErrorLog.errorLog("Error while reading rules: " + e);
```



// so lade ich die html adtei

```
public static URL loadRules() {
        URL url = null;
        try {
            url = ReturnRules.class.getResource("/files/uno_rules_en.html");
        } catch (Exception e) {
            url = null;
            logger.ErrorLog.errorLog("Error while loading rules File" + e);
        }
        return url;
```


----------



## Gast2 (25. Jun 2012)

Das ist doch auch nen völlig anderer Weg wie du die HTML Datei liest 

Der FileReader liest relativ zum working directory, das kannst du dir per 
	
	
	
	





```
new File(".")
```
 mal ausgeben lassen. Poste dann mla die Ausgabe und deine Speicherstruktur.


----------



## hans-sonny (25. Jun 2012)

wie so: System.out.println(new File("."));


----------



## Gast2 (25. Jun 2012)

Das wird dir wohl nur nen Punkt ausgeben 
System.out.println(new File(".").getAbsolutePath());


----------



## timbeau (25. Jun 2012)

War das ne Frage? Ich würde ein bisschen mehr in meine Postings investieren. Bisher sind sie nur so dahingeklatscht. Das ein FileReader was anderes als getResource hast du ja schon gesagt bekommen. 

Du kannst auch den kompletten Pfad angeben. Ansonsten kannst du auch ne Propertiesdatei anlegen. Ist mE eh der schönere Weg um Einstellungen zu speichern.


----------



## hans-sonny (25. Jun 2012)

ok also es klappt nun hab den pfad angepasst .... 

danke für die hilfe

aber so geht es nur wenn ich es aus netbeans raus starte ... möchte auch dass es in meiner jar datei dann geht


----------



## timbeau (25. Jun 2012)

Mein Gott, ist es wirklich so schwierig mal zu überlegen, wie die eigenen Postings ankommen?

Die Frage "was geht denn nicht?" MUSS ja bei deinem Satz kommen. Wieder zuwenige Infos, keine Fehlermeldung, kein Code, keine Konsolenaufrufe etc pp.


----------



## hans-sonny (25. Jun 2012)

habs jetzt so probiert:

```
public static void stringRules() {
        try {
            //System.out.println(new File(".").getAbsolutePath());
            String url = ReturnRules.class.getResource("/files/uno_rules_en.txt").toString();
            System.out.println(url);
            FileReader rules = new FileReader(url);
            BufferedReader in = new BufferedReader(rules);
            String zeile = null;
            while ((zeile = in.readLine()) != null) {
                System.out.println(zeile);
            }
        } catch (IOException e) {
            logger.ErrorLog.errorLog("Error while reading rules: " + e);
        }
    }
```


fehlermeldung: Error while reading rules: java.io.FileNotFoundException: jar:file:\C:\Users\Holz\Desktop\UNO_netbeans.jar!\files\uno_rules_en.txt (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)


----------



## Gast2 (25. Jun 2012)

In nem jar Archiv gibt es keine Files mehr, daher kommst du mit nem FileReader nicht weit. Benutz die Methode getResourceAsStream und verwende dann den InputStream.


----------



## Michael... (25. Jun 2012)

Die Elemente eines Jars sind keine Files und somit nicht mit einem FileReader lesbar.
Man kann die Inhalte aber per getResourceAsStream(...) als Stream einlesen.


----------



## hans-sonny (25. Jun 2012)

```
public static void stringRules() {
        try {
            //System.out.println(new File(".").getAbsolutePath());
            String dir_url = ClassLoader.getSystemResource("/files/uno_rules_en.txt").toString();
            
            FileInputStream inputStream = new FileInputStream(dir_url);
            
            DataInputStream in = new DataInputStream(inputStream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            
            String zeile = null;
            while ((zeile = br.readLine()) != null)   {
                System.out.println(zeile);
            }
        } catch (IOException e) {
            logger.ErrorLog.errorLog("Error while reading rules: " + e);
        }
    }
```



.... funzt nicht^^... meine console schließt sich einfach


----------



## Gast2 (25. Jun 2012)

EikeB hat gesagt.:
			
		

> In nem jar Archiv gibt es keine Files mehr





			
				Michael... hat gesagt.:
			
		

> Die Elemente eines Jars sind keine Files




```
new FileInputStream(dir_url);
```

Fällt dir was auf? 

Nutz den InputStream den dir getResourceAsStream() liefert und ließ davon.


----------



## hans-sonny (25. Jun 2012)

```
public static void stringRules() {
            //System.out.println(new File(".").getAbsolutePath());
            InputStream dir_url = ClassLoader.getSystemResourceAsStream("/files/uno_rules_en.txt");
                      
            InputStreamReader br = new InputStreamReader(dir_url);
            
            String zeile = null;
            while ((zeile = br.toString()) != null)   {
                System.out.println(zeile);
            }
    }
```


so bekomm ich ne nullpointer exception


----------



## timbeau (25. Jun 2012)

Wo genau? 

Liegt die Datei im Jar auch unter /Files...?


----------



## hans-sonny (25. Jun 2012)

ja tut sie






das sind die packages im ajar


----------



## Gast2 (25. Jun 2012)

Lad die jar Datei mal bitte hier hoch.


----------



## hans-sonny (25. Jun 2012)

EikeB hat gesagt.:


> Lad die jar Datei mal bitte hier hoch.



hab oben einen screenshot von der ordner struktur gemacht

im package start ist die main drin
die ruft entweder die tui oder die gui auf

die ruft tui auf 

hier hat man die wahl die regeln zu printen oder das spiel zu statren


----------



## timbeau (25. Jun 2012)

Denke auch mit der JAR kann man besser testen. Mal ohne "/" probiert?


----------



## hans-sonny (25. Jun 2012)

ohne / tut sich wenigstens was ... 

da hab ich jetzt ne endlosschleife fabriziert die das ausgibt


java.io.InputStreamReader@c4cdf7e
java.io.InputStreamReader@c4cdf7e
java.io.InputStreamReader@c4cdf7e
java.io.InputStreamReader@c4cdf7ejava.io.InputStreamReader@c4cdf7e
java.io.InputStreamReader@c4cdf7ejava.io.InputStreamReader@c4cdf7e
java.io.InputStreamReader@c4cdf7e


also endlos


----------



## Gast2 (25. Jun 2012)

```
br.toString()
```
 gibt dir nur ne Stringrepräsentation des Readers, du willst aber vom Stream lesen.
InputStreamReader (Java Platform SE 7 )


----------



## timbeau (25. Jun 2012)

Hold dir noch nen BufferedReader, dann kannst du per readLine() zeilenweise lesen.


----------



## hans-sonny (25. Jun 2012)

ja aber was idst dann die abbruchbedingung für das while?


weil das


```
while ((zeile = br.read()) != null)   {
```

geht nicht


----------



## timbeau (25. Jun 2012)

Jo, das geht nicht. Also BufferedReader nutzen.


----------



## hans-sonny (25. Jun 2012)

so geht es aber auch nicht


```
public static void stringRules() {
            //System.out.println(new File(".").getAbsolutePath());
            InputStream dir_url = ClassLoader.getSystemResourceAsStream("files/uno_rules_en.txt");
                    
            BufferedReader bra = new BufferedReader(dir_url);
            //InputStreamReader br = new InputStreamReader(dir_url);
            
            String zeile = null;
            while ((zeile = bra.readLine()) != null)   {
                System.out.println(zeile);
            }
    }
```

ich kann dem buffered reader doch nicht den input stream mitgeben







also so geht es dass ich es aus netbeans raus starten kann da läuft alles

```
public static void stringRules() throws IOException {
            //System.out.println(new File(".").getAbsolutePath());
            InputStream dir_url = ReturnRules.class.getResourceAsStream("/files/uno_rules_en.txt");
                      
            BufferedReader br = new BufferedReader(new InputStreamReader(dir_url));
            
            String zeile = null;
            while ((zeile = br.readLine()) != null)   {
                System.out.println(zeile);
            }
    }
```

wenn ich aber die jar aufrufe und das mache möchte schließt sich die console


----------



## Gast2 (25. Jun 2012)

Der BufferedReader braucht einen Reader, der InputStreamReader wäre so einer...


----------



## timbeau (25. Jun 2012)

Ne, aber dem BufferedReader den InputStreamReader und dem wiederrum den InputStream.

Sowas kannst du aber nachlesen.


----------



## hans-sonny (25. Jun 2012)

also es geht jetzt .... 

sowohl in der ide als auch aus der console raus


----------

