# Textdatei einlesen



## sarahmaus (1. Jul 2010)

Hallo leute,
ich habe ein großes problem. ich soll eine klasse ArbeiteMitTextDatei erstellen. diese soll die klasse:
public boolean leseTextDatei(): Diese Methode liest solange einen Dateinamen
einer Textdatei vom Bildschirm ein (maximal jedoch 5-mal), bis diese Datei zum Lesen
von Daten ge¨offnet werden kann. Anschließend werden die Zeilen dieser Datei eingelesen
und die eingelesenen Zeilen werden in einem Container-Datenfeld gespeichert. Konnte
die Datei erfolgreich eingelesen werden, wird true ansonsten false zur¨uckgegeben.

beinhalten. leider hab ich keine ahnung wie das geht. kann mir vll einer helfen?

gruß sarah


----------



## Final_Striker (1. Jul 2010)

Wo genau liegt dein Problem?


----------



## VfL_Freak (1. Jul 2010)

sarahmaus hat gesagt.:


> beinhalten. leider hab ich keine ahnung wie das geht. kann mir vll einer helfen?



Beinhalten ???:L???:L???:L

Poste am besten mal den Code, sonst ist es reine Rätselraterei 

Gruß
Klaus


----------



## F.S.WhiTeY (1. Jul 2010)

Hallo Sarah,

deine ansprechpartner für dieses problem ist jedes java.io und java.nio tutorial. 

Hier mal ein kleiner ausflug dahin, ich benutze java.io . 

Wir wollen also einen hadelsüblichen dateinamen vom Bildschirm einlesen... nun das ist einfach, wir biegen den system.in stream einfach um und können so den benutzer zur eingabe auffordern. 

hier eine beispielmethode: 



```
public final boolean LeseDateinamenEin(){
		
		boolean istEingelesen = true;
		
		System.out.println("Bitte geben sie einen Dateinamen ein!!");
		
		BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		
		try{
			this.fileName = buffer.readLine();
		}catch (Exception e){
			istEingelesen=false;
			e.printStackTrace();
		}
		
		
		System.out.println("Sie haben folgenden Dateinamen eingegeben:"+" "+this.fileName);
		
		return istEingelesen;
		
	}
```

nun wollen wir die datei einlesen undzwar zeilenweise... die ergebnisse speichern wir in einer dynamischen Datenstrucktur, da wir nie wissen wieviele zeilen die datei hat. 

Ich nehme hierfür eine LinkedLis, zu deutsch eine Verkettete Liste. 

Beispielmethode:


```
public boolean LeseDateiEin(){
	boolean istEingelesen = true;
	
	
	try {
    FileReader fin = new FileReader(this.fileName);
	BufferedReader buffer= new BufferedReader( fin );
	String zeile = buffer.readLine();
	zeilen.add(zeile);
	while(zeile != null){
		zeile = buffer.readLine();
		zeilen.add(zeile);
	}
		
	} catch (Exception e) {
		istEingelesen=false;
		e.printStackTrace();
	}
	
	
	return istEingelesen;
	}
```


Insgesammt sehe die Klasse so aus: 


```
package hausaufgabenhilfe;

import java.io.*;
import java.nio.*;
import java.nio.channels.FileChannel;
import java.util.*;
public class DateiEinlesen {
	
	
	String fileName;
	LinkedList<String> zeilen = new LinkedList<String>();
	
	public final boolean LeseDateinamenEin(){
		
		boolean istEingelesen = true;
		
		System.out.println("Bitte geben sie einen Dateinamen ein!!");
		
		BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		
		try{
			this.fileName = buffer.readLine();
		}catch (Exception e){
			istEingelesen=false;
			e.printStackTrace();
		}
		
		
		System.out.println("Sie haben folgenden Dateinamen eingegeben:"+" "+this.fileName);
		
		return istEingelesen;
		
	}
	
	
	public boolean LeseDateiEin(){
	boolean istEingelesen = true;
	
	
	try {
    FileReader fin = new FileReader(this.fileName);
	BufferedReader buffer= new BufferedReader( fin );
	String zeile = buffer.readLine();
	zeilen.add(zeile);
	while(zeile != null){
		zeile = buffer.readLine();
		zeilen.add(zeile);
	}
		
	} catch (Exception e) {
		istEingelesen=false;
		e.printStackTrace();
	}
	
	
	return istEingelesen;
	}
}
```

so ich hoffe das bringt dich weiter.. 

ein gutes Tutorial ist übrigens : 

http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf

wenn du mit java.nio arbeiten möchtest, was ich dir schwer empfehlen würde. schon alleine da du abfragen musst ob eine datei lesebereit ist. 

HTH

WhiTeY


----------



## sarahmaus (1. Jul 2010)

erstmal ist die zweite klasse eine methode

naja mein problem ist, dass ich nicht weiß wie ich das machen soll. studiere eigendlich chemie und ich hab mich durch den kurs mitschleppen lassen und jetzt ist es zu spät alles nachzuholen;(
ich soll das mit bluej erstellen und muss es bis heute abend abgeben sonst muss ich den kurs nochmal machen.


----------



## F.S.WhiTeY (1. Jul 2010)

Ich habe dir schon fast alles aufs silbertablett gelegt.. ich könnte dir deine aufgabe auch fertig schreiben aber... lernen durch schmerzen ?!


----------



## F.S.WhiTeY (1. Jul 2010)

By the Way: Phase 4 ist eingetreten, 2 und 3 völlig übersprungen 

und der Weibliche name.... EPIK !


----------



## sarahmaus (1. Jul 2010)

ou mann...ich versuch das jetzt schon die ganze zeit mit bluej....iwi klappt das nicht;(


----------



## F.S.WhiTeY (1. Jul 2010)

irgendwie klappt es nicht ist kein ansatz der mich dazu verleitet dir zu helfen.

Poste bitte:

1. Deinen code
2. Deine Probleme oder den Fehler
3. vilt. Denkansätze bei deinen du nicht weiterkommst


----------



## Nicer (2. Jul 2010)

Richtig , denn wir sind gerne da um zu helfen , aber einen ansatz musstu schon bringen !


----------

