WinFuture-Forum.de: [java] Bestimmte Datei Per Cmd Löschen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[java] Bestimmte Datei Per Cmd Löschen


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 08. April 2010 - 20:20

Hallo Leute,

ich versuche ein kleines workaround in Jave zu erreichen. Ich habe ein Programm was meine Dateien sehr unzuverlässig löscht. Ich muss aber sichergehen dass eine bestimmte Datei beim beenden gelöscht wird.

Also habe ich versucht die Windows Konsole über Java anzusprechen, funktioniert leider nicht:
import java.io.IOException;
public class delete {
	public static void main(String[] args) {
		try {
			Runtime.getRuntime().exec("cmd /c del e:\test.txt");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


jedoch funktioniert das hier:
import java.io.IOException;

public class delete {
	public static void main(String[] args) {
		try {
			Runtime.getRuntime().exec("cmd /c start ping 127.0.0.1");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


Und wen nich "del e:\test.txt" normal in die Konsole eingebe klappt das auch! ;)

Was mache ich hier falsch?

Gruß,
DasToast

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 08. April 2010 - 20:20

0

Anzeige



#2 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 08. April 2010 - 20:33

Ich hab gerade kein Windows am Laufen, aber der Backslash in
"cmd /c del e:\test.txt"
könnte schuld sein. Dann wird nämlich '\t' in 'e:\test.txt' als Tab interpretiert und das geht natürlich schief (Stichwort: Escape-Sequenz). Guck mal, ob's mit
"cmd /c del e:\\test.txt"
geht. Bietet Java keine eigene Methode, um Dateien zu löschen?

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 08. April 2010 - 20:38

0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 08. April 2010 - 20:37

Super geil, es funktioniert! Dass ich da nicht selber drauf gekommen bin! ;)

Jetzt aber noch ein Problem, das DOS Fenster bleibt offen, gibt es einen Befehl um das Fenster zu schließen?

Und JA, es gibt einen Befehl in Java um Dateien zu löschen. Doch bei meinem Programm klappt das nicht immer zuverlässig! ;) Deswegen dieser Umweg! ;-)

Wenn jetzt das DOS-Fenster noch geschlossen wird bin ich glücklich! ;-)
0

#4 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 08. April 2010 - 20:46

Zitat

Wenn jetzt das DOS-Fenster noch geschlossen wird bin ich glücklich! ;)

Wozu öffnest Du eigentlich eine Shell? Geht's nicht auch mit
"del e:\\test.txt"


EDIT:
Ich glaube del gibt's nur im Interpreter der Shell. Ohne cmd geht's also nicht. Google meint, daß man das Fensterverhalten aus Java raus nicht beeinflussen kann. Glaub ich zwar nicht... Was funktioniert denn beim normalen Löschen über Java nicht? Das schmeißt doch immer ausführliche Exceptions, wenn was nicht läuft.

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 08. April 2010 - 20:54

0

#5 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 08. April 2010 - 22:45

Nein nein, ich suche einen Befehl den ich noch hinter den Löschbefehl in die DOS-Box eintrage.
Sobald ich den X Button meinem Programmes betätige soll er eine bestimmte Datei löschen. Er greift auf diese Datei alle 800ms zurück ;) Manchmal ist einfach noch ein STream offen und dann kann Java die Datei nicht löschen, also beendet er trotzem ohne irgendeine Fehlermeldung. Damit das Konzept aber funktioniert ist es zwingen notwendig dass diese Datei gelöscht wird.
0

#6 Mitglied ist offline   Airboss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.029
  • Beigetreten: 27. Januar 07
  • Reputation: 40
  • Geschlecht:Männlich
  • Wohnort:Area 51

geschrieben 09. April 2010 - 01:25

CMD [/C | /K] [Zeichenfolge]

/C Führt den Befehl in der Zeichenfolge aus und endet dann.
/K Führt den Befehl in der Zeichenfolge aus und endet dann nicht.

Dieser Beitrag wurde von Airboss bearbeitet: 09. April 2010 - 01:26

O <<<--------------- NSA! - Anschluß für Sonden --------------->>> O

Eingefügtes Bild
0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 09. April 2010 - 08:06

Toasterfraktion sagte:

dass eine bestimmte Datei beim beenden gelöscht wird

Sag mal, musst du den Löschvorgang über eine Batch-Datei starten?

Weil das in Java nämlich viel einfacher geht: http://java.sun.com/javase/6/docs/api/java...eteOnExit%28%29
0

#8 Mitglied ist offline   scy_ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 120
  • Beigetreten: 02. März 10
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 09. April 2010 - 09:54

Das geht in Java in der Tat besser^^

P.S. Der Befehl zum beenden der "Shell" ist:
exit

Mfg scy
Eingefügtes Bild
0

#9 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. April 2010 - 11:24

Ich werde es mal mit deleteOnExit() versuchen!
0

#10 Mitglied ist offline   pexdortor 

  • Gruppe: Mitglieder
  • Beiträge: 9
  • Beigetreten: 13. April 10
  • Reputation: 0

geschrieben 17. April 2010 - 01:11

Vielleicht könnte dieses Tutorial weiterhelfen: http://java.sun.com/docs/books/tutorial/es.../io/delete.html

Sobald du dich auf die Konsole festlegst, wird das Löschen nur für dieses System funktionieren.

Dieser Beitrag wurde von pexdortor bearbeitet: 17. April 2010 - 01:12

0

#11 Mitglied ist offline   TechChabo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 339
  • Beigetreten: 07. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hannover
  • Interessen:Business Process Manager ITO
    Dipl.-Ing. Wirtschaftsinformatik

geschrieben 26. Mai 2010 - 14:46

public boolean del(java.io.File dir){
	if (dir.isDirectory()){
			String[] entries = dir.list();
			for (int x=0;x<entries.length;x++){
				java.io.File aktFile = new java.io.File(dir.getPath(),entries[x]);
				del(aktFile);
			}
			if (dir.delete())
				return true;
			else
				return false;
		}
		else{
			if (dir.delete())
				return true;
			else
				return false;
		}
}


Hab ich mal für irgendwas gebaut, funktioniert absolut zuverlässig ;) Allersings wird hier ein Ordner rekursiv gelöscht. Ist aber auch kein Problem das absolut analog dazu mit einer einzelnen Datei / mehreren Dateien / einem vollen Ordner zu machen.
Eingefügtes Bild
Eingefügtes Bild
‘The only thing necessary for the triumph of evil is for good men to do nothing.’, Edmund Burke
0

#12 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 26. Mai 2010 - 16:08

Also klar und deutlich als wirklich wichtiger Tipp: vergiss so ne Pfuscherei, sondern behebe das eigentliche Problem - das löschen der Urdatei. Wenn das nämlich von Java aus nicht tut, dann hat das nen Grund - und die Kommandozeile kann das dann auch nicht löschen.

Solltest du dir im allgemeinen angewöhnen, nicht solche Pfuschlösungen anzustreben ;)... Und keine Symptome beheben, sondern Ursachen! Du wirst es dir später danken ;)...

Dieser Beitrag wurde von Lofote bearbeitet: 26. Mai 2010 - 16:09

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0