Wie führe ichWie führe ich den Befehl rd in Java aus?
rd/s/q c: \ Ordner
in Java?
Es woks perfekt in der Befehlszeile.
Wie führe ichWie führe ich den Befehl rd in Java aus?
rd/s/q c: \ Ordner
in Java?
Es woks perfekt in der Befehlszeile.
Nach dtsazza's answer tun:
Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");
Es funktioniert perfekt unter WinXP SP3. Der Parameter /k
zeigt an, dass ein Befehl folgt, der aus dem cmd.exe
ausgeführt werden muss.
Viel Glück damit!
genau das, was ich gesucht habe! –
Obwohl Sie natürlich den umgekehrten Schrägstrich (c: \\ Ordner) verdoppeln müssen –
Überprüfen Sie die Methode Runtime.exec, mit der Sie externe Prozesse aufrufen können. (Denken Sie daran, dass Sie einige Plattformunabhängigkeit verlieren, da dies darauf angewiesen wäre, dass der Computer den Befehl rd
installiert und auf dem Pfad installiert hat.)
Eine bessere Option könnte sein, dasselbe in reinem Java zu tun - Folgendes sollte sein Entsprechung:
private void deleteDirectory(File directory)
{
for (File entity : directory.listFiles())
{
if (entity.isDirectory())
{
deleteDirectory(entity);
}
else
{
entity.delete();
}
}
directory.delete();
}
deleteDirectory(new File("C:\\folder"));
Hinzufügen einer Fehlerprüfung wie erforderlich. :-)
rd funktioniert gut in der Eingabeaufforderung, aber nicht durch Runtime.exec() -Funktion. –
das ist, weil 'rd' ist ein eingebauter Befehl in 'cmd.exe' – Alnitak
ok, aber wie führe ich es in Java irgendwelche Ideen ?? –
Blick auf File.delete(String path)
Methode, das heißt:
new File("c:\\folder").delete();
Wenn die /s
(rekursiv) Löschen wichtig ist, dann ist (nicht getestet):
public void deltree(File file) {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
deltree(f);
}
}
file.delete();
}
public void deltree(String path) {
deltree(new File(path));
}
als aufgerufen:
deltree("c:\\folder");
das löscht nicht den Ordner der enthält Dateien oder/und Ordner. –
überlappende Bearbeitungen - bitte Kommentar entfernen. – Alnitak
File.delete() gibt ein boolesches Flag zurück, das angibt, ob das Löschen erfolgreich war, anstatt eine IOException auszulösen; solltest du das überprüfen? –
Sie können nur leere Verzeichnisse in Java löschen. Zuerst müssen Sie die Dateien und Unterverzeichnisse löschen.
public static boolean removeDirectoryRecursively(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = removeDirectoryRecursively(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// The directory is now empty so delete it
return dir.delete();
}
File.listFiles() ist viel einfacher – Alnitak
Überprüfen Sie FileUtils in Apache Commons-IO; insbesondere die Methoden deleteDirectory und deleteQuietly, die ein Verzeichnis rekursiv löschen können.
Wenn Sie es genau so, wie Sie angegeben ausführen möchten, können Sie
Process p=Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");
Nach allem "es funktioniert perfekt in der Eingabeaufforderung." :) –
das funktioniert nicht –
Es lohnt sich, nach einer reinen Java-Deltree-Lösung zu suchen, wie einige Beiträge vorschlagen! :) – helios