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-----