Re: Java: array in datei speichern

Michael Wenger <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hi Manu!

Manuel P schrieb am 26.02.2005 00:53 :
> Wie speichere ich einen Array in einer Datei?
> Wie aber schaffe ich es, dass ich einen Array so in eine Datei schreibe,
> ihn wieder einzulesen?

Mit Hilfe der Serialisierung kannst du problemlos jedes Objekt binär 
laden und speichern:
http://www.galileocomputing.de/openbook/javainsel4/javainsel_12_013.htm#Rxx365java12013040004031F014100

Ich habe eine Beispielklasse beigefügt, die das am Beispiel zweier 
Arrays zeigt. Mit dieser Klasse kannst du alle serialisierbaren Objekte 
bequem laden und speichern.

Gruß,
Michael

/* #####################
  * ObjectSerializer.java
  */#####################
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;

public class ObjectSerializer {
	private FileOutputStream FOS = null;
	private ObjectOutputStream OOS = null;
	private FileInputStream FIS = null;
	private ObjectInputStream OIS = null;

	public ObjectSerializer() {
	}

	public void save2file(Object obj, File file) {
		if (OOS == null || FOS == null) {
			open_out(file);
		}

		try {
			OOS.writeObject(obj);
		} catch (IOException ioe) {
			System.err.println
				("Error: Could not serialize object.");
			ioe.printStackTrace(System.err);
			System.exit(1);
		}
	}

	public Object readFromFile(File file) {
		if (OIS == null || FIS == null) {
			open_in(file);
		}

		try {
			Object obj = (Object) OIS.readObject();
			return obj;
		} catch (IOException ioe) {
			System.err.println
			("Error: Could not deserialize object.");
			ioe.printStackTrace(System.err);
			System.exit(1);
		} catch (ClassNotFoundException cnfe) {
			System.err.println
				("Error: Could not find class!");
			cnfe.printStackTrace(System.err);
			System.exit(1);
		}
		return null;
	}

	private void open_out(File file) {
		if (OOS != null || FOS != null) {
			close_out();
		}

		try {
			FOS = new FileOutputStream(file);
			OOS = new ObjectOutputStream(FOS);
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
			ioe.printStackTrace(System.out);
			System.exit(1);
		}
	}

	private void open_in(File file) {
		if (FIS != null || OIS != null) {
			close_in();
		}

		try {
			FIS = new FileInputStream(file);
			OIS = new ObjectInputStream(FIS);
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
			ioe.printStackTrace(System.out);
			System.exit(1);
		}
	}

	public void close_out() {
		if (OOS != null && FOS != null) {
			try {
				OOS.close();
				OOS = null;
				FOS.close();
				FOS = null;
			} catch (IOException ioe) {
				System.err.println(ioe.getMessage());
				ioe.printStackTrace(System.out);
				System.exit(1);
			}
		}

	}

	public void close_in() {
		if (OIS != null && FIS != null) {
			try {
				OIS.close();
				OIS = null;
				FIS.close();
				FIS = null;
			} catch (IOException ioe) {
				System.err.println(ioe.getMessage());
				ioe.printStackTrace(System.out);
				System.exit(1);
			}
		}

	}

	public static void main(String[] args) {
		File file = new File("arraysasfile.bin");
		// arrays definieren
		String[] str_arr = new String[] { "Hallo", "Du", "da" };
		int[] int_arr = new int[] { 1, 2, 3, 4 };
		// serializer erzeugen
		ObjectSerializer serializer = new ObjectSerializer();		
		// arrays speichern
		serializer.save2file(str_arr, file);
		serializer.save2file(int_arr, file);
		serializer.close_out();
		// arrays laden
		String[] str_arr_read =
			(String[]) serializer.readFromFile(file);
		int[] int_arr_read =
			(int[]) serializer.readFromFile(file);
		serializer.close_in();
		// geladene arrays ausgeben
		System.out.println(Arrays.toString(str_arr_read));
		System.out.println(Arrays.toString(int_arr_read));

		System.exit(0);
	}
}
signature.asc (application/pgp-signature, 546 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQEVAwUBQh/aD3GeOfdBLQhTAQLWzgf/am1G+gf8Evoavye7MbNWAnDtDU+df8ez
SXfr6eH9Yl4NHEwX3lklsg4u/6EtGJZD6nwnYQXs+eyNdMvthOrJ39G9UH/agCXf
Z9FW6/ZNVThZvUG7c6+WhLAUbSsrZqu3/9DXBpc0VK6FjRtf4gtbjOnZeN0joadu
QleTKLDNMlB6hBQmjVPZO7lKMHePtd3pC31YRyRBeFxr6kFpL4m1UxwzoE17sKCm
AeIQcEc4FgV/5wReoZXxuQlN3yp13/ptWch4X8nlyjmWkMx1f7SpqQ3kSPDrBftQ
ASX//hIg5kiGJmRb0UVLHe0QmNwKnjV3QiUfcciDLzfR6a0b74bvbA==
=w83q
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.