Persistentes Objekt laden Progressbar

vimar

Bekanntes Mitglied
Hallo,

ich möchte ein abgespeichertes Objekt laden (derzeit 107MB) gross. dazu möchte ich eine jprogressbar haben die mir anzeigt wie weit das Objekt schon geladen wurde. (derzeitige ladezeit durch standart-deserialisierung ca 3 minuten).


hier mein einlesecode:

Java:
public static void loadSIFTDB_noXML(){
    
    try{
        FileInputStream datei = new FileInputStream("lol.ser");
        ObjectInputStream o = new ObjectInputStream(datei);
        System.out.println("KMEANS wird geladen");
       KMEANS = (kmeans) o.readObject();
                
        System.out.println("KMEANS fertig geladen!");
        o.close();
    }
    catch (Exception e){
        System.out.println("fehler!");
    }
    }

und hier meine tolle jprogressbar:
progressbar.jpg


wie genau verknüpfe ich nun meine jprogressbar? ich denke ich muss die bytelength vom objekt haben? in der insel steht ich solle noch ByteArrayOutputStream nutzen und dann nach dem speichern .toByteArray.length()? damit hätte ich die länge?

ich muss doch irgendwie bei o.readObject() mit eingreifen können? jemand ne etwas konkretere idee wie ich das hier mache? mfg
 
Zuletzt bearbeitet:
G

Gast2

Gast
Das geht nicht so einfach. Dein Problem ist dass readObject() dir nicht sagen kann wieweit die deserialisierung schon ist. Du weißt also nicht wie der aktuelle Stand ist. Ich wüsste auch nicht wie man das zuverlässig abschätzen könnte.

Du könntest aber beispielsweise einfach die progress bar einblenden und auf
Code:
setIndeterminate(true);
setzen, dann läuft die einfach solange von links nach rechts bis du die ausblendest.
 

vimar

Bekanntes Mitglied
was wäre denn wenn ich das objekt speichere, einen byteoutputstream erstelle, die gesamte größe erfasse mit length. und später beim laden dann einen byteinputstream in einem thread, dort könne mal wohl mit x.count() das nächste zu lesende byte kriegen, und dann diesen counter durch die gesamtlänge, das ergebnis auf die progressbar normieren? kann das nicht klappen?
 

turtle

Top Contributor
Ich habs noch nicht probiert, aber schau Dir mal
Java:
 javax.swing.ProgressMonitorInputStream
an. Das sollte passen.

Habs grad mal ausprobiert. Zumindest mit einer sehr grossen Datei funktioniert es ohne Probleme und der Progress schreitet voran, wärend die Datei geladen wird. Hier mein Beispiel-Code
Java:
public class Turtle extends JPanel {
	private String fileName = "turtle.out";

	public Turtle() {
		JButton btnStart = new JButton("Start");
		btnStart.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					InputStream progressIn = new BufferedInputStream(
							new ProgressMonitorInputStream(Turtle.this, "Lese "
									+ fileName, new FileInputStream(fileName)));
					final Scanner in = new Scanner(progressIn);
					SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
						protected Void doInBackground() throws Exception {
							while (in.hasNextLine()) {
								in.nextLine();
							}
							in.close();
							return null;
						}
					};
					worker.execute();
				} catch (FileNotFoundException e1) {
					e1.printStackTrace();
				}
			}
		});
		add(btnStart);
	}

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		JFrame frame = new JFrame("Turtle");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(new Turtle());
		frame.pack();
		frame.setVisible(true);
	}
 
Zuletzt bearbeitet:

vimar

Bekanntes Mitglied
hey danke, dennoch eine frage.

muss ich hier:

Java:
protected Void doInBackground() throws Exception {
                            while (in.hasNextLine()) {
                                in.nextLine();
                            }
                            in.close();
                            return null;
                        }

nicht irgendwie noch
Code:
 KMEANS = (kmeans) o.readObject();
mit einbringen?
oder versteheich hier was falsch?
 

turtle

Top Contributor
Ja, Du musst da noch was ändern.

Der ProgressMonitorInputStream wrapped einen InputStream. Dieses kann ein FileInputStream, wie in meinem Beispiel, oder ein ObjectInputStream, wie in Deinem Fall, sein.

Aus diesem Stream liest Du nun aus, im SwingWorker, und der ProgressMonitor zeigt einen Fortschritt-Balken an.
 

vimar

Bekanntes Mitglied
sorry ich bin einfach zu blöd scheinbar:

Java:
final ObjectInputStream o = new ObjectInputStream(new BufferedInputStream(
                            new ProgressMonitorInputStream(null, "Lese "
                                    + fileName, new FileInputStream(fileName))));
        SwingWorker<kmeans, kmeans> worker = new SwingWorker<kmeans, kmeans>() {
                @Override
                  protected kmeans doInBackground() throws Exception {
                            
                            
                    return (kmeans) o.readObject();
                  }
               
                protected void done(){
                try {
                    KMEANS = get(); // Endergebnis aus doInBackground() holen.
             
                } 
                catch (InterruptedException e) {
                    throw new RuntimeException(e);
                } 
                catch (ExecutionException e) {
                    throw new RuntimeException(e);
                }
            }

will nicht -.-
 

vimar

Bekanntes Mitglied
ok lol es geht scheinbar ohne extra thread via worker...

Java:
public static void loadSIFTDB_noXML(){
    String fileName = "lol.ser";
    try{
        
        final ObjectInputStream o = new ObjectInputStream(new BufferedInputStream(
                            new ProgressMonitorInputStream(null, "Lesee "
                                    + fileName, new FileInputStream(fileName))));
        
                            
                            
                    KMEANS = (kmeans) o.readObject();
                    o.close();
                 
            }
             catch (Exception e){
        System.out.println("fehler!");   

             }
       }

der liest ein, updated auch die progressbar ohne extra thread alles klar -.- :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
B mit maus Objekt bewegen AWT, Swing, JavaFX & SWT 3
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
U Was genau ist ein Shape-Objekt? AWT, Swing, JavaFX & SWT 3
DonBronson Objekt bewegen (Mausposition) AWT, Swing, JavaFX & SWT 3
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
U Was ist ein Shape, also klar ein Objekt, aber was ist damit gemeint (Graphics2d)? Und was sidn affinetransformationen AWT, Swing, JavaFX & SWT 1
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
C Objekt an paintComponent weitergeben AWT, Swing, JavaFX & SWT 1
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
J gezeichnetes Objekt anklicken AWT, Swing, JavaFX & SWT 10
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JavaFX als eigenes Objekt AWT, Swing, JavaFX & SWT 3
M [JavaFX] Objekt um Zentrum rotieren (Camera) AWT, Swing, JavaFX & SWT 1
E JavaFx Screne mehr als ein "Objekt" zuordnen ? AWT, Swing, JavaFX & SWT 2
F 2D-Grafik Objekt durch Einwirkung einer Kraft im Raum bewegen AWT, Swing, JavaFX & SWT 14
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
S Objekt durch Tasteneingabe mehrmals drehen AWT, Swing, JavaFX & SWT 9
E Swing Objekt zu Position (Point) bewegen AWT, Swing, JavaFX & SWT 2
T 3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen AWT, Swing, JavaFX & SWT 3
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
S Objekt einmal laden zweimal anzeigen 3d AWT, Swing, JavaFX & SWT 6
I Swing Zugriff auf ein Objekt AWT, Swing, JavaFX & SWT 2
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
R Möglichkeiten ein abgeleitetes Objekt zu erzeugen AWT, Swing, JavaFX & SWT 4
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
T Objekt in Kreisbahn bewegen AWT, Swing, JavaFX & SWT 5
B Zeichnen von Bildern auf JPanel aus eigenem Objekt AWT, Swing, JavaFX & SWT 19
V Parameter an Runnable-Objekt übergeben AWT, Swing, JavaFX & SWT 6
Dit_ Objekt mit ActionEvent übergeben AWT, Swing, JavaFX & SWT 2
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
D Objekt mit Button erstellen und mit anderem Button verwenden AWT, Swing, JavaFX & SWT 4
P Objekt kopieren AWT, Swing, JavaFX & SWT 2
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
U [MVC] Objekt bearbeiten AWT, Swing, JavaFX & SWT 9
O Swing JTable Colum Objekt AWT, Swing, JavaFX & SWT 6
Dit_ Ein Kreis als Graphics2D oder als Ellipse2D Objekt AWT, Swing, JavaFX & SWT 19
M Objekt im ActionListener ansprechen AWT, Swing, JavaFX & SWT 3
C Wie komme ich an ein Objekt aus einem JTree? AWT, Swing, JavaFX & SWT 10
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
D Objekt (Map) in Textfeld ausgeben AWT, Swing, JavaFX & SWT 10
kirchrath Swing Aus ActionEvent Objekt herausfinden auf dem er ausgeführt wurde AWT, Swing, JavaFX & SWT 4
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
S Objekt wird während Endlosschleife nur einmal bewegt AWT, Swing, JavaFX & SWT 2
W Objekt-array als Raster visualisieren AWT, Swing, JavaFX & SWT 3
F Herausfinden, auf welchem Objekt der Fokus liegt AWT, Swing, JavaFX & SWT 2
G Tooltip Text für ein Shape Objekt AWT, Swing, JavaFX & SWT 2
D DnD ganzer Objekte(Objekt erstellen) AWT, Swing, JavaFX & SWT 2
G Wie ziehe ich ein Objekt aus einer JList? AWT, Swing, JavaFX & SWT 7
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
B in jList feld aus einem objekt anzeigen AWT, Swing, JavaFX & SWT 2
R SWT color Objekt AWT, Swing, JavaFX & SWT 4
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
L Objekt in JComboBox einfügen AWT, Swing, JavaFX & SWT 2
S JComboBox, ein Renderer und das selektierte Objekt AWT, Swing, JavaFX & SWT 4
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
B actionPerformed reagiert nicht auf das Canvas-objekt AWT, Swing, JavaFX & SWT 11
J DocumentListener uebergibt Objekt; wie in JTextfield casten? AWT, Swing, JavaFX & SWT 3
B Objekt in "actionPerformed" erzeugen und nutzen AWT, Swing, JavaFX & SWT 3
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
B Ein Image Objekt drehen? AWT, Swing, JavaFX & SWT 2
G Referenz über MenuItem aus ActionListener auf das Objekt AWT, Swing, JavaFX & SWT 8
lin Welches Objekt für einen About-Dialog verwenden? AWT, Swing, JavaFX & SWT 2
R Selectable Graphics Objekt gesucht. AWT, Swing, JavaFX & SWT 5
Wildcard FontMetrics ohne Graphics-Objekt AWT, Swing, JavaFX & SWT 13
S objekt kann methode der aufrufenden klasse nicht aufrufen AWT, Swing, JavaFX & SWT 2
Y Objekt in JFrame AWT, Swing, JavaFX & SWT 3
M Objekt in TableCellRenderer packen, warum ein Fehler? AWT, Swing, JavaFX & SWT 2
K Objekt in eine bestimmte Zelle eines JTables legen AWT, Swing, JavaFX & SWT 3
D getResource() bei Image-Objekt AWT, Swing, JavaFX & SWT 9
A Problem mit dem graphics-Objekt AWT, Swing, JavaFX & SWT 8
D in neues Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 3
E warum erkennt er das objekt nicht???? AWT, Swing, JavaFX & SWT 4
G Fehler bei BasicStroke Objekt AWT, Swing, JavaFX & SWT 2
G Zurgriff auf Objekt über event.getComponent AWT, Swing, JavaFX & SWT 3
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben