---
title: "Lagring av data"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/28314-lagring-av-data"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "LilleSkutt"
published: "2001-09-12T16:23:00.000Z"
updated: "2001-09-17T10:05:00.000Z"
replies: 11
views: 439
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/28314-lagring-av-data"
---

# Lagring av data

## #1 — LilleSkutt, 2001-09-12T16:23Z

Hallå!
Jag skulle vilja veta om det går att lagra en tvådimensionell array i en fil på något sätt?

Förutom att loopa igenom den och skriva ut varje post för sig till filen...

Går det? :q

Permalänk: https://www.webforum.nu/p/28314

## #2 — Vetgirig, 2001-09-12T17:02Z

Javisst, alla object som uppfyller  java.io.Serializable kan enkelt skrivas till en fil med en java.io.ObjectOutputStream.

PS Detta är en RTFM fråga.

Permalänk: https://www.webforum.nu/p/402036

## #3 — LilleSkutt, 2001-09-12T17:24Z

Ok, RTFM? :q

Hur skulle koden kunna se ut?
Något som denna:
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
ObjectOutputStream oos = new ObjectOutputStream(new File("filen"));
oos.write(min2DArray);

Permalänk: https://www.webforum.nu/p/402037

## #4 — Vetgirig, 2001-09-12T17:31Z

RTFM - Read The Fucking Manual

Det finns bra exempel i klass-dokumentationen
för en av de ovan nämda klasserna -  du får
dock söka reda på vilken själv. 
 [http://www.tuxedo.org/\~esr/faqs/smart-questions.html](http://www.tuxedo.org/~esr/faqs/smart-questions.html)

Permalänk: https://www.webforum.nu/p/402038

## #5 — GunnarD, 2001-09-13T14:53Z

Fel.

RTFM = Read The Fine Manual :e

Permalänk: https://www.webforum.nu/p/402039

## #6 — LilleSkutt, 2001-09-13T17:07Z

Tänka sig, jag fick faktiskt idén att kolla upp hur man använde ObjectOutputStream i manualen, direkt efter att du sade vad jag skulle använda :e

Nu har jag lite problem bara... Hur får jag till det när jag ska läsa in datan igen? Man kan väl inte casta till en två dimensionell array?

Står ju inget i manualen om det...

Permalänk: https://www.webforum.nu/p/402040

## #7 — Lime, 2001-09-14T07:36Z

Du kan aldrig serialisera en vanlig array. Den måste kapslas in i något serielizerbart objekt.

/Lime

Permalänk: https://www.webforum.nu/p/402041

## #8 — spango, 2001-09-14T09:36Z

<http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html#61637>  
Det är bara att serialisera på!

Permalänk: https://www.webforum.nu/p/402042

## #9 — Lime, 2001-09-14T13:03Z

Ja jävlar. Det har du rätt i. Så smidigt. Jag tror jag måste uppdatera lite av mina 1.1.8-kunskaper.

Vad mycket lättare världen skulle bli om vi fick en JVM som stödjer Java2 i vårt projekt...

/Lime

Permalänk: https://www.webforum.nu/p/402043

## #10 — LilleSkutt, 2001-09-14T16:34Z

Jag har nu kommit på att funktionen readObject(); funkar att läsa in min lagrade tvådimensionella array med. Ett problem dock... Jag kan inte ändra värdena i den! Plus att jag inte vet om funktionen läser allt i filen. För tillfället är arrayen så liten att den lagras på endast en rad i filen, och då går det fint. Men om man ska läsa flera filer, går det med readObject()? Eller är den som readLine(), att den bara läser en rad i taget?

Man kan ju inte loopa igenom filen och lägga in varje rad i ett objekt...

Så här har jag gjort:

```
public String reader(String filen) {
	Object input = null;

	try {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filen));

		input = ois.readObject();
	}
	catch(ClassNotFoundException e) {
		System.err.println("Ett fel uppstod.\n\n" + e.getMessage());
		System.exit(1);
	}
	catch(FileNotFoundException e) {
		System.err.println("Filen som angavs finns inte.\n\n" + e.getMessage());
		System.exit(1);
	}
	catch(IOException e) {
		System.err.println("Ett fel uppstod.\n\n" + e.getMessage());
		System.exit(1);
	}

	this.fields = (String[][])input;
}
```

Jag läser alltså bara första raden (?) i filen, och man kan ju inte göra så här:

```
public String reader(String filen) {
	Object input = null;
	Object ln = null;

	try {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filen));
		while((ln = ois.readObject()) != null) {
			input += ln;
		}
	}
	catch(ClassNotFoundException e) {
		System.err.println("Ett fel uppstod.\n\n" + e.getMessage());
		System.exit(1);
	}
	catch(FileNotFoundException e) {
		System.err.println("Filen som angavs finns inte.\n\n" + e.getMessage());
		System.exit(1);
	}
	catch(IOException e) {
		System.err.println("Ett fel uppstod.\n\n" + e.getMessage());
		System.exit(1);
	}

	this.fields = (String[][])input;
}
```

Man kan ju inte lägga till objekt till ett objekt med **\+=**, enligt kompilatorn :l

Permalänk: https://www.webforum.nu/p/402044

## #11 — phonkworks, 2001-09-17T07:56Z

Du kommer att läsa in  HELA objektet med ett readObject() anrop, dvs du får med hela 2dArrayen även när den blir mycket större.

Ändringar i din array gör du precis som vanligt när du har läst in den, typ:
this.fields\[0\]\[1\] = "en ändring";

Sen skriver du bara tillbaka arrayen och allt är frid och fröjd.

\[Redigerat av phonkworks den 17 sep 2001\]

Permalänk: https://www.webforum.nu/p/402045

## #12 — Lime, 2001-09-17T10:05Z

Det finns ingen begränsning på hur lång en "rad" är i en fil...

/Lime

Permalänk: https://www.webforum.nu/p/402046

---

Tråden på webben: https://www.webforum.nu/amne/java/28314-lagring-av-data
