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

  • Themenstarter Themenstarter Ronn
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Ronn

Gast
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
 
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.
 
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
 
@stevg

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

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

Object[][] load() throws Exception
{
  ObjectInputStream ois=...
  return (Object[][])ois.readObject();
}
 
Ich danke euch für die Antworten.Ich versuche es erstmal.Wenn ich es nicht hinbekomme
melde ich mich nochmal.

Gruß Ronn
 
Hi Leute!

Ich kriege es nicht hin.Ich gebe euch mal die
Code:
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
 
Es spricht nichts dagegen.Ich bin für alles offen.
Du meinst also so ein ObjectStream:

Code:
	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:
Code:
	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
 
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)
 
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.
 
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.
 
doch, das geht. du musst das object, welches du mit readObject() liest wieder auf dei array casten, schon hat sich die sache.

Code:
	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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben