.txt Dateien Löschen

Tobias Feld

Grünschnabel
Hallo ich würde gerne mit einem Programm alle .txt dateien löschen die in einem Ordner liegen ich habe nun versucht es so gut wie möglich zu mnachen bzw. habe ich mich in diesem Forum Schlau gemacht jedoch stehe ich jetzt mehr als nur an ich komme einfach nicht weiter könntet ihr mir vlt. Helfen


Code:
import java.io.File;
import java.io.FilenameFilter;


public class löschen_file {

    public static void main(String[] args) {

        //alle Files unter C:\\ die .txt sind ausfiltern.
        final File dir = new File("C:\\");
String[] fileList = dir.list(new FilenameFilter() {
    public boolean accept(File d, String name) {
  
        return name.endsWith(".txt");
      
       File fileName = dir;
   
    // Objekt das das File f erstellt und den wert "fileName" übertragt
    
       File f = new File(fileName);

    // Sicherstellen das es das File oder Verzeichniss gibt
    if (!f.exists())
      throw new IllegalArgumentException(
          "Delete: no such file or directory: " + fileName);

    if (!f.canWrite())
      throw new IllegalArgumentException("Delete: write protected: "
          + fileName);

    // sichergehen das das Verzeichniss leer ist
    if (f.isDirectory()) {
      String[] files = f.list();
      if (files.length > 0)
        throw new IllegalArgumentException(
            "Delete: directory not empty: " + fileName);
    }

    // file löschen
    boolean success = f.delete();

    if (!success)
      throw new IllegalArgumentException("Delete: deletion failed");
  }

}
 
Moin,

sorry, aber meine Kristallkugel ist derzeit zur Reparatur! :eek:

Wo genau hast Du denn welches Problem ? ?
Bitte beschreibe es genauer .....

Gruß
Klaus
 
Haha

sorry ok

er sagt mir das das Falsch sei :

Code:
String[] fileList = dir.list(new FilenameFilter() {
    public boolean accept(File d, String name) {
  
        return name.endsWith(".txt");
      
       File fileName = dir;
   
    // Objekt das das File f erstellt und den wert "fileName" übertragt
    
       File f = new File(fileName);

und es geht nicht warum es nicht geht könnte an dem oberen Problem liegen allerdings glaube ich das ich noch einen Fehler Habe denn selbst wenn ich es auf einene Einzelne Listing Methode zusammen schneide macht er nichts also wenn ich den löschen teil ein klammere geht der teil in dem er die teile suchen soll auch nicht

war das genau genug oder willst du noch etwas wissen?

lg
 
Wer - ER ? ? ? Der Compiler ? ? ?
Und wie genau lautet dann die Fehlermeldung ?

Hab' das Ganze mal kurz etwas durch strukturiert und gesehen, dass am Ende Klammern fehlen ! ! !
Code:
import java.io.File;
import java.io.FilenameFilter;

public class löschen_file 
{
    public static void main(String[] args) 
    {
        //alle Files unter C:\\ die .txt sind ausfiltern.
        final File dir = new File("C:\\");
        
        String[] fileList = dir.list(new FilenameFilter() 
        {
                 public boolean accept(File d, String name) 
                 {
                         return name.endsWith(".txt");
                         File fileName = dir;
   
                         // Objekt das das File f erstellt und den wert "fileName" übertragt
                         File f = new File(fileName);

                         // Sicherstellen das es das File oder Verzeichniss gibt
                         if (!f.exists())
                         {
                             throw new IllegalArgumentException(
                                   "Delete: no such file or directory: " + fileName);
                         }
                         if (!f.canWrite())
                         {
                             throw new IllegalArgumentException("Delete: write protected: "
                                   + fileName);
                         }

                         // sichergehen das das Verzeichniss leer ist
                         if (f.isDirectory()) 
                         {
                              String[] files = f.list();
                              if (files.length > 0)
                              {
                                  throw new IllegalArgumentException(
                                      "Delete: directory not empty: " + fileName);
                              }
                         }

                         // file löschen
                         boolean success = f.delete();

                         if (!success)
                         {
                            throw new IllegalArgumentException("Delete: deletion failed");
                         }
                  }

         }
         
// #########################################
// hier fehlen zwei schließende Klammern 
// #########################################
   }
}

Gruß
Klaus
 
er ist der compiler und der compiler regt sich auch auf wenn ich ihm die beiden klammern dazu machen?

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement
at löschen_file$1.accept(löschen_file.java:15)
at java.io.File.list(File.java:1010)
at löschen_file.main(löschen_file.java:12)


ich bin verwirrt warum regt ers ich bei den klammern auf und warum geht das Programm nicht vielen Dank für deine schnelle Hilfe hoffe du kannst mir helfen
 
Schau mal hier:
Code:
import java.io.File;
import java.io.FilenameFilter;

public class löschen_file 
{
    public static void main(String[] args) 
    {
        //alle Files unter C:\\ die .txt sind ausfiltern.
        final File dir = new File("C:\\");
        
// ###################################################################
// hier wird durch die öffnende Klammer quasi eine Methode deklariert, 
// was vermutlich falsch ist! Ich vermute, das folgendes richtig wäre
//      String[] fileList = dir.list(new FilenameFilter();     
        String[] fileList = dir.list(new FilenameFilter() 
        {
// ###################################################################
        

                 // ################################################################
                 // hier wird eine Methode deklariert, die AM ENDE einen bool'schen 
                 // Rückgabewert erwartet !!
                 // Du gibst aber gleich zu Beginn einen Wert zurück (true, wenn der
                 // Dateiname auf '.txt' endet, warum auch immer .....)
                 // siehe hierzu auch meinen vorherigen Post          
                 public boolean accept(File d, String name) 
                 {
                         return name.endsWith(".txt");
                         File fileName = dir;
   
                         // Objekt das das File f erstellt und den wert "fileName" übertragt
                         File f = new File(fileName);

                         // Sicherstellen das es das File oder Verzeichniss gibt
                         if (!f.exists())
                         {
                             throw new IllegalArgumentException(
                                   "Delete: no such file or directory: " + fileName);
                         }
                         if (!f.canWrite())
                         {
                             throw new IllegalArgumentException("Delete: write protected: "
                                   + fileName);
                         }

                         // sichergehen das das Verzeichniss leer ist
                         if (f.isDirectory()) 
                         {
                              String[] files = f.list();
                              if (files.length > 0)
                              {
                                  throw new IllegalArgumentException(
                                      "Delete: directory not empty: " + fileName);
                              }
                         }

                         // file löschen
                         boolean success = f.delete();

                         if (!success)
                         {
                            throw new IllegalArgumentException("Delete: deletion failed");
                         }
                  }

         }
         
// #########################################
// hier fehlen zwei schließende Klammern 
// #########################################
   } // die kann jetzt raus !! 
}

Gruß
Klaus
 
OHje, in deinen Klassen ist ein riesen durcheinander oder?

Klassennamen schreibt man uebrigens gross.

In deiner Methode
Java:
public boolean accept(File d, String name) {
  
        return name.endsWith(".txt");
springt er direkt nach der 1. Zeile raus. Ich glaub net das du das so machen wolltest. WEil der ganze Code der unter dem return steht, wird niemals aufgerufen
 
Zuletzt bearbeitet:
Ach so - und noch eins:

Du darfst die Klasse nicht "löschen_file" nennen ! ! !
KEINE Umlaute ! ! !

Gruß
Klaus
 
Wenn man das mit Eclipse oder so schreibt, muesste der das doch direkt als Fehler anzeigen? :suspekt:
 

Neue Beiträge

Zurück