# Array[][] in die Datei schreiben bzw. aus der Datei lesen



## Ronn (9. Sep 2003)

Hallo Leute!

Hab ein Problem mit Arrays.
Ich speichere ein Array[][] in die Datei.(Hoffe ich!)
Wie lese ich aus der Datei wieder ins Array[][].
Bei einem Vector gibt es ja .ElemetAT(). Aber beim Array?

Ich hoffe ihr könnt mir schnell helfen.
Gruß Ronn


----------



## stev.glasow (9. Sep 2003)

du könntes es in einen vector 'v' lesen und dann per v.toArray() in dein array speichern.

weis jetzt nicht ab dir das weiterhilft, am besten du zeigst und mal deinen code.


----------



## Nobody (9. Sep 2003)

du liest es nach der selben logik ein, wie du es geschrieben hast:

zb wenn du in jede zeile ein objekt schreibst, fängst du an das ganze an wieder auszulesen. wenn du nicht sicher bist wie gross das array sein muss, dann kannst du das ganze durch hinzufügen einer zeichenabfolge darstellen und dann dieses suchen bzw zählen.

zur veranschaulichung wie das mit dem schreiben gemeint ist eine kleine darstellung(kann auch anders aufgebaut sein):
das aussehen in der datei, wobei dort dann natürlich der wert/objekt steht
[0][0]
[0][1]
...
[0][n]
trennung
[1][0]
[1][1]
...
[1][n]
trennung



so kannst du das dann aufbauen. es ist auch eine aufschrieb einer zeile statt untereinander erfolgen (1. dimension wird untereinander dargestellt, 2. nebenbeinander)

der quelltext dazu sollte kein hexenwerk sein


----------



## DTR (10. Sep 2003)

@stevg

das v.toArray() erzeugt dir nur einen Eindimensionalen Array. Hier würde also in Array aus Vektoren entstehen. Das sollte man vieleicht dazuschreiben.


----------



## mariopetr (10. Sep 2003)

am einfachsten geht es mit objectstreams


```
void save(Object[][] oa) throws Exception
{
  ObjectOutputStream oos=...
  oos.writeObject(oa);
}

Object[][] load() throws Exception
{
  ObjectInputStream ois=...
  return (Object[][])ois.readObject();
}
```


----------



## joschika77 (10. Sep 2003)

Ich danke euch für die Antworten.Ich versuche es erstmal.Wenn ich es nicht hinbekomme
melde ich mich nochmal.

Gruß Ronn


----------



## joschika77 (10. Sep 2003)

Hi Leute!

Ich kriege es nicht hin.Ich gebe euch mal die 

```
Funktion  Sichern().

                String daten[][];

                void sichern()
	{
		FileOutputStream fileout;
		DataOutputStream out;
		try
		{
		fileout = new FileOutputStream(strMonatsname+" "+ComboJahr+".txt");
			out = new DataOutputStream(fileout);
			
			for(int i=0; i<daten.length;i++)
			{
				for(int j=0; j<daten.length;j++)
				{
					out.writeChars(daten[i][j]);
					//out.writeChars("Hallo");
				}
			}
				
			out.close();
			fileout.close();
		}
		catch(Exception a){}
	}
```
Also das mit dem Hallo schreibt er in die Datei,aber das Array nicht.Denn ist die Datei leer.
Hoffe ihr könnt mir helfen.

Gruß Ronn


----------



## mariopetr (10. Sep 2003)

was spricht gegen meinen vorschlage, warum willst du unbedingt alle elemente einzeln sichern?


----------



## joschika77 (10. Sep 2003)

Es spricht nichts dagegen.Ich bin für alles offen.
Du meinst also so ein ObjectStream:


```
String daten[][];

	void sichern()
	{
		FileOutputStream fileout;
		ObjectOutputStream out;
		try
		{
		fileout = new FileOutputStream(strMonatsname+" "+ComboJahr+".txt");
		out = new ObjectOutputStream(fileout);
			
			for(int i=0; i<daten.length; i++)
			{
				out.writeBytes(daten.toString());
			}
				
			out.close();
			fileout.close();
		}
		catch(Exception a){}
	}
```
Denn steht auch was in der Datei.Bin denn aber wieder da wo ich gestern war.Wie lade ich das wieder?
Versucht habe ich es so:

```
void laden()
	{
		FileInputStream filein;
		ObjectInputStream in;
		try
		{
			filein = new FileInputStream("GESICHERT.txt");
			in = new ObjectInputStream(filein);
			
			try
			{
				//in.readLine(daten);
				
			}catch(Exception ae){};
			
			in.close();
			filein.close();
		}
		catch(Exception a){}
	}
```
Das geht irgendwie nicht.

Gruß Ronn


----------



## mariopetr (10. Sep 2003)

mal nicht so hektisch, und lese dir mal mein 1. posting in diesem thread durch. da steht auch, wie man es laed. und benutze bitte codetags (dazu muss bbcode activiert sein)


----------



## joschika77 (10. Sep 2003)

Könntest du mich aufklären?
Ich lese ein Object ein und muss das denn wieder beim Neustart in dieses Array[][] reinbekommen.
Das geht nicht.


----------



## DTR (10. Sep 2003)

Mit writeObject() schreibst du den Array in die Datei. Mit readObject() kannst du ihn dann wieder auslesen. Aber da readObject() nur ein Object zurück gibt, musst du ihn noch casten.


----------



## mariopetr (10. Sep 2003)

doch, das geht. du musst das object, welches du mit readObject() liest wieder auf dei array casten, schon hat sich die sache. 


```
ObjectInputStream ois=...
	Object object=ois.readObject(); // das ist das, was gespeichert wurde
	Object[][] oaa=(Object[][])object; //ich habe hier mal Object als typ genommen, musst du bei dir natuerlich anpassen
```


----------



## joschika77 (10. Sep 2003)

So ich danke euch. Hat geklappt.
Cooles Forum.

Gruß Ronn


----------

