JProgressbar

eo_r

Mitglied
Hallo Community,


ich bin ein Java Anfänger und wollte euch zu einem Projekt das ich bearbeite etwas fragen.

Nun ich habe mit Java-Swing einen Papierkorb erstellt. Alles funktioniert perfekt und ich kann meine ausgewählten Dateien löschen :D.

Meine Frage lautet : Wie kann ich bei größeren Dateien (100mb) eine anzeige erstellen die mir den Status des Löschens zeigt?
 

javampir

Bekanntes Mitglied
hi,
wie löschst du die dateien? wenn du sie "normal" löschst, verschwinden sie zwar aus dem Verzeichnisbaum, aber eigentlich müssten sie noch auf der festplatte sein (eventuell sogar in den system-papierkorb). dann sollte nur der verweis auf die datei geändert werden und die größe der datei ist unerheblich.
vlt täusche ich mich auch total.
wenn du sie löschst, indem du nuller drüberschreibst z.B., dann kannst du aus dem nullerschreiben heraus den fortschritt der progressbar setzen
javampir
 

eo_r

Mitglied
Java:
				try{
					 
					//Pfad aus dem Texfeld entnhemen und Datei löschen
					File file = new File(textField.getText());
		 
		    		if(file.delete()){
		    			
						JOptionPane.showMessageDialog(null,file.getName()+ 
		    				    " Wurde erfolgreich gelöscht");
		    			
		    			textField.setText("");
		    		}else{
		    			//Ausgabe : Löschen fehlgeschlagen
						JOptionPane.showMessageDialog(null,
		    				    "Datei konnte nicht gelöscht werden.",
		    				    "Fehler?",
		    				    JOptionPane.WARNING_MESSAGE);
		    			
		    		}
		 
		    	}catch(Exception ae){
		 
		    		ae.printStackTrace();
				
		    	}

So lösche ich die Dateien. Der Pfad wird aus dem JTextfeld genommen. Also die Dateien verschwinden und im Papierkorb ist nix.
 

javampir

Bekanntes Mitglied
hast du mal versucht, unterschiedlich große dateien zu löschen und dabei die zeit gemessen (als differenz von millisekunden) ? ich bin nämlich nicht überzeugt, dass die datei durch den aufruf von der festplatte verschwindet - nur aus dem verzeichnisbaum
javampir
 

eo_r

Mitglied
Hmm... also ich hab es mit mehreren Dateien versucht mal 100mb mal auch 15kb groß. Die Dateien verschwinden recht schnell. Falls es dann wirklich nur aus dem Verzeichnisbaum verschwindet.. kann man die Datei wieder aufrufen ?

Ich versuch es mal mit Millisekunden zu messen.

Und hier(How to delete file in Java) habe ich erfahren wie man überhaupt Dateien in Java löscht. Ich hab den code ein bischen geädert, damit es mit meiner GUI Anwendung passt.

PS: Danke für die schnellen Antworten :)
 
Zuletzt bearbeitet:

javampir

Bekanntes Mitglied
neine, die datei ist ohne wiederherstellungsverfahren (sehr kompliziert, teuer und glückssache) nicht mehr zu bekommen
javampir
 

Tobse

Top Contributor
neine, die datei ist ohne wiederherstellungsverfahren (sehr kompliziert, teuer und glückssache) nicht mehr zu bekommen
javampir

Teuer ist es nicht, es gibt Freeware :p Aber ja, es ist hoch kompliziert und eine wirkliche Glückssache; auf manchen Dateisystemen (speziell Journaling wie ext noch schwieriger wie unter MS-NTFS).

@TE:
Auch von mir die Aussage: Es macht keinen Unterschied, wie groß eine Datei ist (vielleicht höchstens, wie lang ihr Pfad ist aber diesen Unterschied wirst du schwerlich Messen können).
Es macht aber in der Tat einen Unterschied, ob es 2 oder 200 Dateien sind. Damit das mit deiner JProgressBar funktioniert brauchst du einen 2. Thread. Ich habe mir da ein paar Hilfsklassen für geschrieben (welche auch ein ETA berechnet und solchen schnickschnack), sieht dann in entwa so aus:

Java:
final File[] files = ...; // zu löschende Dateien

final ProgressFrame pF = new ProgressFrame();
pF.setTitle("Lösche " +  files.length + " Dateien...");

new Thread(() -> {
    deleteFiles(files, new ProgressListener() {
        public void processStarted(int min, int max)
        {
            pF.setMinimum(min);
            pF.setMaximum(max);
        }
        public void processStateChanged(int value)
        {
            pF.setValue(value);
            pF.setAction(value + " von " + files.length + " Dateien gelöscht");
        }
        public void processFinished()
        {
            pF.setVisible(false);
        }
    });
}).start();
 
Zuletzt bearbeitet:

eo_r

Mitglied
Okay,

kann ich es dann auch so machen das er dann die Bytes zählt und nach gelöschten Bytes den Balken füllt?
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Sicher. Du kannst zu beginn (in meinem Bsp processStarted) nicht die Anzahl an Dateien mitgeben sondern die Anzahl Byte (oder KByte). Nachdem eine Datei gelöscht ist addierst du ihre größe auf eine art Counter und gibst den Wert wieder an processStateChanged weiter.
Siehe File#length.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
E jProgressBar auf 0 stellen Java Basics - Anfänger-Themen 1
M JProgressBar wird nicht richtig angezeigt Java Basics - Anfänger-Themen 8
S JProgressbar mit individuellem Start/Endpunkt Java Basics - Anfänger-Themen 11
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
S JProgressBar richtig anwenden Java Basics - Anfänger-Themen 27
N JProgressBar Java Basics - Anfänger-Themen 8
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
J JProgressBar - wird nicht geupdated Java Basics - Anfänger-Themen 3
H JProgressBar wird nicht aktualisiert Java Basics - Anfänger-Themen 7
S jProgressBar läuft nicht! Java Basics - Anfänger-Themen 13
H Aktualisierung des JProgressBar in Abhängigkeit eines Threads Java Basics - Anfänger-Themen 5
Y jprogressbar beenden? Java Basics - Anfänger-Themen 4
L JProgressBar für FileUpload Java Basics - Anfänger-Themen 3
B Pseudo JProgressBar Java Basics - Anfänger-Themen 3
G JProgressBar - XP style Java Basics - Anfänger-Themen 4
G JProgressBar während dem ausführen einer Funktion Java Basics - Anfänger-Themen 3
S jProgressBar Java Basics - Anfänger-Themen 3
G JProgressBar Java Basics - Anfänger-Themen 2
G JProgressBar#2 Java Basics - Anfänger-Themen 2
G JProgressBar Java Basics - Anfänger-Themen 7
G jProgressBar value aus anderer Klasse heraus verändern Java Basics - Anfänger-Themen 7
B jProgressBar mit while nicht for Java Basics - Anfänger-Themen 13
K JProgressbar, zur laufzeit steuern Java Basics - Anfänger-Themen 7
V JProgressBar anklickbar? Java Basics - Anfänger-Themen 2
A Timer + JProgressBar Java Basics - Anfänger-Themen 4
G in JProgressBar Fortschritt anzeigen Java Basics - Anfänger-Themen 8
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
Z Problem mit JProgressBar Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben