Filename Filter



  • Hallo, ich hatte heute eigentlich vor einen FilenameFilter zu basteln um .txt Files rauszufiltern, nun hab ich noch mal nachgelesen und fand in der online Ausgabe der "Javainsel" folgendes:

    Sollen aus einer Liste von Dateien einige mit bestimmten Eigenschaften (zum Beispiel der Endung) herausgenommen werden, so müssen wir dies nicht selbst programmieren. Schlüssel hierzu ist die Schnittstelle FilenameFilter und FileFilter. Wenn wir etwas später den grafischen Dateiselektor kennen lernen, so können wir dort auch den FilenameFilter einsetzen. Leider hatte der Fehlerteufel seine Finger im Spiel, und der FilenameFilter funktioniert nicht, weil der FileSelector fehlerhaft ist.

    http://www.galileocomputing.de/openbook/javainsel5/javainsel12_000.htm#Xxx999378

    Danach steht ein Bsp wie man einen FilenameFilter implementiert(?)! Was soll das nun heissen - kann man FilenameFilter nun benutzen oder ist der fehlerhaft? Hat da jemand Erfahrungen? Wo liegen die Einschraenkungen?



  • Hi,
    ich habe gerade damit rumgebastelt... irgendwie lief das nicht so wie ich es mir vorgestellt habe. Ich habe dann dem FileDialog einfach .setFile("*.txt") angegeben, was das machte was ich wollte (nur txt-daten anzeigen)

    Irgendwo habe ich gelesen das der FileFilter gar nicht mit windows geht..?



  • 4 Obwohl die Funktionalität dokumentiert ist, findet sich unter der Bug-Nummer 4031440 kurz: »The main issue is that support for FilenameFilter in the FileDialog class was never implemented on any platform – it’s not that there’s a bug which needs to be fixed, but that there’s no code to run nor was the design ever evaluated to see if it *could* be implemented on our target platforms«.



  • Hallo "GanzUnten",
    ja - genau das meine ich! Ist der Bug denn nun aktuell oder bereits behoben? Also Kann man in Java nun einen Filenamen Filter einbauen oder nicht? In dem Buch wird's doch so schoen beschrieben??!!!



  • Google: java Bug 4031440 Selber lesen.



  • Danke fuer's googlen!

    State: Closed, will not be fixed
    (...)
    workaround: unknown?!?

    😮

    Nja, irgendwie klingt's logisch, aber warum gibt's denn dann die Klasse?!

    Bleibt die Frage, wie man das eben ansonsten realisieren kann? Gibt's da echt keine Moeglichkeit nen Filter zu bauen ohne halt die Klasse FilenameFilter oder is der einzigste Behelf etwa auf ".txt" als String zu pruefen (sofern ".txt" verwendet wurde)?



  • File file = new File("C:\\");
    File[] files = file.listFiles();
    for(files...){
       if(files[i].getName().endswith(".txt") {
          ...
       }
    }
    

    buggy ⚠



  • Nja danke, so aehnlich hatte ich das vorher auch - dann hab ich mich gefreut, dass es "FilenameFilter" gab. 🙄

    Dann bin ich ja auf dem "richtigen" Weg.



  • Was ist das Ziel?
    Folgenden Programme spielt:

    File[] txtList(File dirName) {
      return dirName.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
          return name.endsWith(".txt");
        });
    }
    


  • Irendwie so schrieb:

    buggy ⚠

    File dir = new File("C:\\");
    File[] files = dir.listFiles();
    for(File file : files) {
       if(file.isFile() && file.getName().endswith(".txt") {
          ...
       }
    }
    

Anmelden zum Antworten