Input/Output ObjectInputStream

gre000

Mitglied
Hallo,

ich habe folgendes Problem ich möchte gerne eine Textdatei vom User persistent in mein Java Programm Importieren. Kurz worum es genau geht es ist eine .txt Datei die folgendermaßen aufgebau ist:

Peter Muster 123456789
Max Muster 541566445

Daten sind in fester Breiten eingeteilt. Das ist aber nicht direkt mein Problem.
Ich hatte folgende Idee, ich wollte die Daten in eine mehr dimensionale hashMap speichern
(Map<String, List>) und dieses Object dann per ObjectOutputStream persistent speichern.
Java:
public static void save(String fileName, Object toSave) {
        try {
            FileOutputStream file = new FileOutputStream(fileName);
            try (ObjectOutputStream o = new ObjectOutputStream(file)) {
                o.writeObject(toSave);

            }
        } catch (IOException ex) {
            Logger.getLogger(Savedata.class.getName()).log(Level.SEVERE, null, ex);
        }

Sowei so gut das läuft auch alles ich kann die Daten auch mit ObjectInputStream wieder herrausholen
Java:
public static Map<String, List> open(String fileName) {
        Map<String, List> m = new HashMap<>();

        try {
            FileInputStream i = new FileInputStream(fileName);
            ObjectInputStream o = new ObjectInputStream(i);
            m = (Map) o.readObject();

//            System.out.println(s);
        } catch (IOException ex) {
            Logger.getLogger(Opendata.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            System.out.println(ex);
        }

        return m;

Das funktioniert alles soweit aber die Datenmenge ist so groß das das Laden des Objektes ca. 25 Sekunden braucht und ich jetzt nach einer besseren und schnelleren Methode suche?


VIelen Dabk für eure Hilfe schon mal im Vorraus und einen schönen Abend noch
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
ist die Datei denn hunderte MB groß?

es ist wohl nicht so leicht das Programm zu kürzen, dann würden die Objekte wegfallen (*),
aber versuche zumindest das Laden in ein neues Programm mit main-Methode zu stecken, dort auch langsam?

wenn es dort schnell geht dann kann man vermuten, dass anderes im großen Hauptprogramm ein Problem ist,
aber nicht unbedingt eine Verbesserung der Situation..


(*)
durchaus kann man aber auch versuchen, Objekte wegzulassen, nur noch halb so viel zu speichern usw.,
halbiert sich dann die Zeit?


> ich möchte gerne eine Textdatei vom User persistent in mein Java Programm Importieren.

wie groß ist denn auch die Ursprungsdatei und braucht dieser Import merkbare Zeit oder nicht?

-----

als Alternative auf dem Niveau kommt eine DB in Frage,
oder eine äußerst individualisierte Minimalspeicherung der Objekte, alles selber implementieren, jedes gesetzte byte/ char genau abwiegen
 

gre000

Mitglied
Hallo,

danke für die Antwort erstmal bin ich froh das meine Idee nicht völlig falsch ist :)
Das ist mein erstes "richtiges" Java Projekt.
Also die Textdatei ist ca. 11mb groß was mich halt wunder ist das das speichern nur 9sec benötigt.
Dabei wird dann noch die Textdatei auseinandergeflückt.
Eine Datenbank habe ich für übertrieben gehalten das Progamm soll mir später einfach nur bei eingabe eines Namens die Adresse ausgeben.
 

anti-held

Bekanntes Mitglied
ich würde dir trotzdem zu einer sqlite Datenbank raten.
Ist dann auch nur eine Datei die auf deinem Rechner liegt und von der du sql-abfragen machen kannst.
 

anti-held

Bekanntes Mitglied
ich würde zwar die datenbank dann in den ordner, in dem die jar datei liegt, haben.
Aber theoretisch kannst du das auch in die jar datei mit reinpacken!
 

Ähnliche Java Themen

Neue Themen


Oben