# Einlesen einer Textdatei in einen Array



## Morphinus21 (28. November 2007)

Also wie ich eine Datei einlese ist mir Bekannt. Aber wie kann ich diese in ein Array einlesen, sodass ich später direkt auf ein einzelnes Feld zugreifen kann?
Über Hilfe wäre ich sehr dankbar


----------



## zerix (28. November 2007)

Hallo,

eine Idee wäre, wenn du die komplette Datei in einen String einliest und dann die Methode split benutzt. So kannst du den Text bei an allen Lehrzeichen, Zeilenumbrüchen, o.ä teilen und dann hast du ein Array, in dem jedes Wort in einem eigenen Feld steht.

MFG

zEriX


----------



## Morphinus21 (28. November 2007)

Also ich lese ja die Datei mit

```
public class ArrayEinlesen {
	public static void main (String[] args)
	{ 
		
		try
        {
			
			new BufferedReader(new FileReader("D://Übungsaufgaben//inhalt.txt"));
```
ein... Das ist ja ein String...Meinte eher das ich jede Zeile in einem Arrayfeld speichern will


----------



## MiMi (28. November 2007)

Na dann les es doch Zeile fuer Zeile ein

```
public static void readFile(String fileName) throws FileNotFoundException, IOException{
        String s;
        BufferedReader in = new BufferedReader(new FileReader(fileName));
        while((s = in.readLine()) != null){
            s += in.readLine();
        }
        in.close();
    }
```
In *s* steht dann jeweils immer die Zeile, die du dann in ein Vector zb speichern kannst
Durch google und Forumssuche waerst du auch fuendig geworden


----------



## zerix (28. November 2007)

Das gleiche kannst du natürlich auch für jede Zeile machen.

MFG

zEriX


----------



## Morphinus21 (28. November 2007)

```
package Aufgabe2;
import java.io.*;

public class ArrayEinlesen
{
	public static void main (String[] args)
	{
                try
                {
			
			String s; 
	        	BufferedReader in = new BufferedReader(new FileReader("inhalt.txt")); 
        		while((s = in.readLine()) != null)
			{   	
				
				}
        		in.close();
			
			               
		}       

                catch (Exception exc)
                {
			System.out.println("Textdatei nicht gefunden!");
                }

	}

}
```
So sieht da mal bis jetzt aus.
Es ist halt zur Aufgabe gemacht worden, jede Zeile mit Hilfe eines Array umzudrehn, die in der textdatei vorkommt. Dazu habe ich mal überhaupt keine Ideen


----------



## MiMi (28. November 2007)

Versuch erstma die Zeilen jetzt in das Array zu speichern! Fang klein an und versuch net direkt das Endergebnis hinzubekommen.
Lass dir doch einfach mal mit nem System.out.println ausgeben was in der while passiert.
Also:

```
System.out.println("s: " + s):
```


----------



## Mel_One (28. November 2007)

Umdrehen? Jeden Buchstaben oder jedes Wort? So dass aus der Zeile

Hallo, sie da.

da. sie Hallo,

wird oder 

.ad eis ,ollaH

wird?


----------



## Morphinus21 (28. November 2007)

Ja das ist klar. Er gibt mir Zeile für Zeile aus!

```
s: Zeile 1
s: Zeile 2
s: Zeile 3
s: Zeile 4
```
Mir ist klar was passiert...Aber wie geht es weiter


----------



## Morphinus21 (28. November 2007)

Mel_One hat gesagt.:


> Umdrehen? Jeden Buchstaben oder jedes Wort? So dass aus der Zeile
> 
> Hallo, sie da.
> 
> ...



Also wie im Beispiel, z.b  das aus Zeile 1, 1 elieZ wird


----------



## MiMi (28. November 2007)

Den Thread hatten wir doch letztens schonmal. Und das es dir klar ist, hat sich net so angehoert, da du ja net mal wusstest was du mit dem String machen sollst den du ausgelesen hast aus der Textdatei.


----------



## Morphinus21 (28. November 2007)

Ja darum frag ich ja, das mit vllt mal geholfen wird und ich auf die Sprünge komme, bzw es mal klick mcht und ich es verstehe


----------



## Mel_One (28. November 2007)

Naja, den String hast du ja schon. Den kannst du in ein Char-Array verwandlen:


```
s.toCharArray();
```
Das müsstest du dann nur noch umdrehen. Dann hast du das, was du erst einmal haben möchtest.


----------



## zerix (28. November 2007)

Willst du jedes Wort in einem Feld im Array stehen haben oder jeden Buchstaben?

MFG

zEriX


----------



## Morphinus21 (28. November 2007)

zerix hat gesagt.:


> Willst du jedes Wort in einem Feld im Array stehen haben oder jeden Buchstaben?
> 
> MFG
> 
> zEriX



EIgentlich immer die ganze ZEile, da ja die Zeile komplett umgedreht werden soll


----------



## Mel_One (28. November 2007)

Morphinus21 hat gesagt.:


> Also wie im Beispiel, z.b  das aus Zeile 1, 1 elieZ wird



Wenn ich das jetzt richtig verstanden hab, braucht er da wohl die einzelnen Chars.


----------



## Morphinus21 (28. November 2007)

```
BufferedReader in = new BufferedReader(new FileReader("D://Übungsaufgaben//inhalt.txt")); 
        		while((s = in.readLine()) != null)
			{   	
        			
        			
        			char[] test = s.toCharArray();
        			System.out.println(test);
        			
        		
        			
				}
        		in.close();
```
So sieht des jetzt schon mal aus..Aber wie dreht man das ganze um


----------



## zerix (28. November 2007)

Ganz einfach. Du musst Zeichen für Zeichen ausgeben. Du läufst rückwärts mit einer Schleife über das Array und gibst dann die einzelnen Zeichen aus.

MFG

zEriX


----------



## MiMi (28. November 2007)

Kann man net nen StringBuffer verwenden, der hat doch die methode reverse? Es sei denn er/sie muss es selbst implementieren


----------



## Morphinus21 (28. November 2007)

Ich wäre ja für ne for-Schleife...Oder ist diese dafür nicht so geeignet? Bi  heute irgendwie etwas verplant


----------



## Mel_One (28. November 2007)

Doch, doch, For-Schleife funktioniert auch. Wenn aber der String-Buffer auch funktioniert, dann würd dich das von der Implementierung bewahren.


----------



## Morphinus21 (28. November 2007)

ja also ich wills nicht mit dem strinbuffer machen...Werds dann wohl mal mit der for-schlaife machen..hat da mal wer nen ansatz?


----------



## Mel_One (28. November 2007)

zerix hat gesagt.:


> Ganz einfach. Du musst Zeichen für Zeichen ausgeben. Du läufst rückwärts mit einer Schleife über das Array und gibst dann die einzelnen Zeichen aus.
> 
> MFG
> 
> zEriX



Ja, stand schon da oben.


----------



## MiMi (28. November 2007)

zerix hat gesagt.:


> Ganz einfach. Du musst Zeichen für Zeichen ausgeben. Du läufst rückwärts mit einer Schleife über das Array und gibst dann die einzelnen Zeichen aus.
> 
> MFG
> 
> zEriX



Ja hat zerix dir schon gegeben

Edit: zu langsam, aber daran is nur der Server schuld ^^


----------



## Morphinus21 (28. November 2007)

```
package Aufgabe2;
import java.io.*;
import java.util.*;

public class ArrayEinlesen
{
	public static void main (String[] args)
	{
		
                try
                {
			
			String s; 
	        	BufferedReader in = new BufferedReader(new FileReader("D://Übungsaufgaben//inhalt.txt")); 
        		while((s = in.readLine()) != null)
			{   	
        			
        		     s.toString();
        			char[] test = s.toCharArray();
        			for(char i = ; i < test.length;i--)
        			System.out.println(test);
        			
        			
        		
        			
				}
        		in.close();
			
			               
		}       

                catch (Exception exc)
                {
			System.out.println("Textdatei nicht gefunden!");
                }

	}

}
```

So irgendwie häng ich mit der for-Schleife...Was amche ich falsch?


----------



## Morphinus21 (28. November 2007)

*So habe das ganze mal mit dem StringBuffer gemacht*


```
package Aufgabe2;
import java.io.*;
import java.util.*;

public class ArrayEinlesen
{
	public static void main (String[] args)
	{
		
                try
                {
			
			String s; 
	        	BufferedReader in = new BufferedReader(new FileReader("D://Übungsaufgaben//inhalt.txt")); 
        		while((s = in.readLine()) != null)
			{   	
        			StringBuffer str = new StringBuffer(s);
        		     s.toString();
        			//char[] test = s.toCharArray();
        			//for(char i = ; i < test.length;i--)
        		     StringBuffer ui = str.reverse();
        		     System.out.println(ui);
        		     PrintWriter out = new PrintWriter( "D://Übungsaufgaben//inhalt.txt" );
        		     out.println(ui);
        		     out.close();
        		 
        			
        			
        		
        			
				}
        		in.close();
			
			               
		}       

                catch (Exception exc)
                {
			System.out.println("Textdatei nicht gefunden!");
                }

	}

}
```

*Wie mache ich es nun, das er das ganze so in die Datei schreibt? So wie ich es jetzt habe schreibt er ja nur die letzte Zeile mehr nicht*Ausgeben tut er es richtig


----------



## Mel_One (28. November 2007)

Hier einmal eine Einführung in Java-Schleifen:

http://www.galileocomputing.de/openbook/javainsel6/javainsel_02_006.htm#Xxx1001209


----------



## Mel_One (28. November 2007)

Zu einem BufferedReader sollte es auch einen BufferedWriter geben. Der Link, den ich geschickt habe, führt zu einem Java-Buch, das auch erklärt, wie man in Dateien schreibt, da findest du Hilfe. 
Genauer gesagt, da:
http://www.galileocomputing.de/open...12_007.htm#mj80ad0c1fd81fb6ea34210e9e5fb2d726


----------



## Morphinus21 (3. Dezember 2007)

```
package Aufgabe2;
import java.io.*;
import java.util.*;

public class ArrayEinlesen
{
	public static void main (String[] args)
	{
		
                try
                {
			
			String s;
			StringBuffer str = new StringBuffer();
	        	BufferedReader in = new BufferedReader(new FileReader("D://Übungsaufgaben//inhalt.txt")); 
        		while((s
        			= in.readLine()) != null)
        			
			{   	
        			
        		     s.toString();
        			//char[] test = s.toCharArray();
        			//for(char i = ; i < test.length;i--)
        		      str.reverse();
        		      PrintWriter out = new PrintWriter( "D://Übungsaufgaben//inhalterzeugt.txt" );
         		     out.println(str);
         		     out.close();
        		     System.out.println(str);
        		     
        		     
        		 
        			
        			
        		
        			
				}
        		in.close();
        		
			
			               
		}       

                catch (Exception exc)
                {
			System.out.println("Textdatei nicht gefunden!");
                }

	}

}
```

Mhh also es klappt shonmal..aber beim schreiben schreibt er nur die letzte zeile..Wie mach ich es, dass er alle zeilen schreibt?


----------

