Suchen mit Filterfunktion, Platzhalter etc.

Status
Nicht offen für weitere Antworten.

Xclipse

Aktives Mitglied
Hallo Zusammen,

habe eine Aufgabe bekommen und kann meinen Cheff nicht davon überzeugen, dass es nicht geht.

Die Aufgabenstellung ist es, die Namen der Deiten aus einem bestimmten Verzeichniss zu ermitteln. Was ja kein Problem ist.

Aber dadurch dass die Dateinamen einen festen und einen variablen Teil haben, wird es etwas schwerer.

Nach meiner Recherche gibt es keine typische Klasse, Funktion oder Methode, die wie Suchfunktion vom Windows mit *dateiname*.txt einfach filtert.

Soweit wie ich weiss, gibt es FindFirstFile() usw.. aber für C/C++ etc. aber nicht für Java.

Ich bin der Meinung solche ausfilterungen müssen ausprogrammiert werden.
Habe auch schon diverse lösungswege gefunden, aber eben nicht das was mein Cheff meint.
Oder kann man die Suche dem BS übergeben und das ergebnis abfangen?

Was meint ihr dazu?

Danke schon mal im Voraus
 
S

SlaterB

Gast
rede doch mal Klartext,
was hast du gegeben, was möchtest du,

gehts um Java? um ein Konsolenprogramm/ eine GUI?

was für komische Dateinamen mit 'einen festen und einen variablen Teil'?
*.txt kann man mit regulären Ausdrücken prüfen,
auf einem String
 

Pappenheimer++

Bekanntes Mitglied
Ich denke, der Threadersteller will wissen (bzw. bestätigt haben), ob/dass es keine Java-Funktion "finde alle Dateien mit Endung .xyz im aktuellen Verzeichnis" gibt, sondern nur eine, die alle Dateien unabhängig von ihrer Endung auflistet und damit den Java-Programmierer vor die herrausfordernde Aufgabe stellt, Regex zu verwenden.
 

JSteinhilber

Bekanntes Mitglied
Ähm, geht's noch?

Am besten ruhig und gleichmäßig weiteratmen. Das entspannt und schützt darüberhinaus vor dem Erstickungstod.

Im übrigen gibt es Grundregeln des menschlichen Miteinanders, und die sind gar nicht so unbrauchbar!

Grüße
Jürgen
 

Wildcard

Top Contributor
@JSteinhilber
Du hast gerade gepostet als ich den von dir (zu recht) angeprangerten Beitrag entsorgt habe, daher fehlt der Kontext ein wenig...
 

Maximum

Aktives Mitglied
BACK TO TOPIC

Wenn du Datein nach iherer Dateiendung filtern willst, dann guck dir mal den FileFilter an.

Erkläre doch bitte genauer, was du mit "einen festen und einen variablen Teil" meinst. Das verstehe ich noch nicht ganz.
 

JSteinhilber

Bekanntes Mitglied
Lieber Wildcard,
das ist absolut kein Problem.
Im Gegenteil ich war schockiert daß derart persönliche Beleidigungen in diesem ansonsten fantastischen Forum toleriert werden und bin jetzt aber froh daß Du ratz fatz ein ".remove(Component); gefolgt von .validate();" durchgeführt hast.

(Du siehst ich lerne dazu, wahrscheinlich dauert es jetzt nur noch 100 Jahre und schon kapiere ich Java - in Teilen...)

Gruß
Jürgen
 

Xclipse

Aktives Mitglied
Hallo nochmals,

JSteinhilber hat gesagt.:
Ähm, geht's noch?

Am besten ruhig und gleichmäßig weiteratmen. Das entspannt und schützt darüberhinaus vor dem Erstickungstod.

Im übrigen gibt es Grundregeln des menschlichen Miteinanders, und die sind gar nicht so unbrauchbar!

Grüße
Jürgen

kann mir bitte jemand erklären, was los ist!???? ???:L

Ist es so schlimm eine normale Frage zu stellen?

Ich habe gegen 17:30 Uhr aus verzweiflung eine Frage gestellt, und bin dann anschliessend nachhause gefahren.
Habe dann mit meiner Tochter erst den Flieger gemacht, dann verstecken gespielt und dann Legotürme aufgebaut, bis meine Frau mit dem Abendessen fertig war und wir gemeinsam gegessen haben. Anschliessend habe ich ihre Zähne geputzt, habe sie gewickelt, schlaffertig gemacht und sie ins Bett gebracht, alles super OK, da meine Frust schon weg ist.

Nun habe ich mich eingelogt um evtl. Antworten zu lesen und habe denn Eindruck, dass ich was verpasst habe!!
 

Maximum

Aktives Mitglied
Das war nicht an dich gerichtet, sondern an jemanden, dessen post mitlerweile gelöscht wurde.
Nicht weiter dran stören. :wink:
 

Xclipse

Aktives Mitglied
SlaterB hat gesagt.:
rede doch mal Klartext,
was hast du gegeben, was möchtest du,

gehts um Java? um ein Konsolenprogramm/ eine GUI?

was für komische Dateinamen mit 'einen festen und einen variablen Teil'?
*.txt kann man mit regulären Ausdrücken prüfen,
auf einem String

Hallo Christiane, Christian oder Sebastian Jabbusch, :bloed: :bloed: :bloed: :bloed:

bitte bitte bitte, tu mir und vor allem dir selbst einen Gefallen und schreibe mir bitte keine Antworten mehr.
Setzte mich auf deine Schwarze liste aber bitte nicht mehr antworten, weil ich auf deine bemerkungen nicht mehr eingehen möchte, und du machst dir die Arbeit umsonst.
Oder versuche wenigstens die Fragen zu verstehen, die man stellt, und das ganze bevor du sie antwortest.
Bitte!!!!!
Es nervt langsam.
 

Maximum

Aktives Mitglied
*Mit ruhiger uns sanfter Stimme ganz freundlich spricht*

Sorry, aber ich muss dir leider auch mal sagen, dass du evtl auf solche Posts reagieren solltest, indem du versuchst deine Fragestellung etwas zu konkretisieren.
Ich bin mir beim lesen deines ersten Posts auch nicht im klaren gewesen, was du genau möchtest. Ich habe aber dennoch versucht dir eine Antwort zu geben.

Aber offensichtlich liest du nicht alle Antworten. Wenn dir der Post von SlaterB nicht passt, dann überlies in doch einfach, wenn andere Leute versuchen wollen dir zu helfen (Ich denke SlaterB will dir auch helfen).

:wink:
 
S

SlaterB

Gast
wer diesem User jetzt noch hilft muss sich über sinkendes Forum-Niveau nicht mehr wundern..
 

Maximum

Aktives Mitglied
@SlaterB:
Solche Kommentare sind allerdings nicht gerade Hilfreich.

Ich wäre mal für BACK TO TOPIC
 

Xclipse

Aktives Mitglied
Maximum hat gesagt.:
BACK TO TOPIC

Wenn du Datein nach iherer Dateiendung filtern willst, dann guck dir mal den FileFilter an.

Erkläre doch bitte genauer, was du mit "einen festen und einen variablen Teil" meinst. Das verstehe ich noch nicht ganz.

JA an FileFilter und FilenameFilter bin ich schon dran. Weiß aber nicht ob es das richtige ist.
Danke!!!

Also wir bekommen div Dateien zum einlesen.
Die Dateien heissen z.B. ABC_20080310_Berlin_Teil_1.txt.

So nun wird es so, dass ABC_20080310 sich täglich in z.B. DEF_20080311 und Teil_1 sich in Teil_2 ändert.
Der einzige konstante Teil wird das Wort "Berlin" sein, und darauf soll ein Filter gesetzt werden.
D.h. dass Alle Dateien in denen das Wort "Berlin" vorkommen, sollen eingelsen werden.

Da er Varibale Teil auch keine konstante Länge haben wird, dachte ich an eine Funktion wie beim suchen in Windows.
z.B. suche nach *Berlin*.*
Ergebnis:

ABC_20080310_Berlin_Teil_1.txt
DEF_20080311_Berlin_Teil_2.txt

usw.......

Ich hoffe es ist jetzt etwas versändlicher.

~~~~~~~~~~~~~~~
Danke, Gruß und Tschö

Xclipse
 

Maximum

Aktives Mitglied
Das kannst du machen, in dem du dir die Dateiliste holst (File#listFiles()) und mit einer Schleife die Dateinamen durchgehst un mit regulären Ausdrücken (RegEx) bearbeitest.

Also im Grunde genau das, was du schon gesagt hast "*Berlin*\.*"

Für die RegEx kannst du die Methode String#matches() verwenden. Die Liefert true, falls der String den RegEx erfüllt.
 

Xclipse

Aktives Mitglied
Maximum hat gesagt.:
Das kannst du machen, in dem du dir die Dateiliste holst (File#listFiles()) und mit einer Schleife die Dateinamen durchgehst un mit regulären Ausdrücken (RegEx) bearbeitest.

Also im Grunde genau das, was du schon gesagt hast "*Berlin*\.*"

Für die RegEx kannst du die Methode String#matches() verwenden. Die Liefert true, falls der String den RegEx erfüllt.

Hi Maximum,

also das Prblem habe ich nun so gelöst:

Code:
import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class datFilter implements FilenameFilter {

    public boolean accept(File f, String s) {

        return s.toLowerCase().endsWith(".dat");
    }
}

public class Dir {

    public static void main(String[] args) {

        File dat = new File("d:\\test");
        System.out.println("Es sind " + dat.list().length
                + " Datein im Verszeichnis " + dat + " vorhanden!\n");

        String datListe[] = dat.list(new datFilter());

        System.out.println(datListe.length + " .dat Dateien:\n");

        for (int i = 0; i < datListe.length; i++) {

        	Pattern p = Pattern.compile("Berlin");
        	Matcher m = p.matcher(datListe[i]);

        	if (m.find()) {
                System.out.println(datListe[i]);
        	}
        }
    }
}

Ist doch OK oder?

Wie bekomme ich es nun hin, dass die Groß-/Kleinschreibung "Berlin" ignoriert wird?

Danke und Gruß
 

mwildam

Mitglied
Xclipse hat gesagt.:
Wie bekomme ich es nun hin, dass die Groß-/Kleinschreibung "Berlin" ignoriert wird?
(?i) vorne an die Regular expression anhängen.

Ich habe es so implementiert - das sollte im Grunde grundsätzlich möglichst so funktionieren wie über "normale" File-Masks:
Code:
package testsamples;

import java.io.File;
import java.util.Collection;
import java.util.LinkedList;
import java.util.regex.Pattern;

/**
 *
 * @author Martin Wildam
 */
public class Main
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        LinkedList<String> fileList = new LinkedList<String>();
        findFiles(new File("F:/Poll"), "Test*.txt", false, fileList);
        
        System.out.println(fileList.size() + " files found:");
        for (String fileName : fileList)
        {
            System.out.println(fileName);
        }

    }
    
    public static String convertMaskToRegEx(String mask, boolean caseSensitive)
    {
        String exp = mask.toLowerCase();
        exp = exp.replace("\\", "\\\\");
        exp = exp.replace("^", "\\^");
        exp = exp.replace("$", "\\$");
        exp = exp.replace("+", "\\+");
        exp = exp.replace("-", "\\-");
        exp = exp.replace("(", "\\(");
        exp = exp.replace(")", "\\)");
        exp = exp.replace("{", "\\{");
        exp = exp.replace("}", "\\}");
        exp = exp.replace("[", "\\[");
        exp = exp.replace("]", "\\]");
        exp = exp.replace(".", "\\.");
        exp = exp.replace("*", ".*");
        exp = exp.replace("?", ".");
        
        if (!caseSensitive)
            exp = "(?i)" + exp;
        
        return exp;
    }

    
    public static void findFiles(File dir, String filter, boolean incSubDirs,
        Collection<String> list)
    {
        if (dir == null) return;
        //char ps = File.separatorChar;

        //Although the method is called "listFiles" it returns files and
        //folders/directories.
        File[] contents = dir.listFiles();

        //Convert simple filemask to an equivalent regular expression
        String exp = convertMaskToRegEx(filter, false);

        //When we loop through subfolders we should perform two loops to
        //get the output list with files in the current folder first and then
        //the files in the subfolders.
        //Otherwise one loop through the files is enough.
        if (incSubDirs)
        {
            for (File item : contents)
            {
                Pattern p = Pattern.compile(exp);
                if (item.isFile() && p.matcher(item.getName()).matches())
                    list.add(item.getPath());
            }
            for (File item : contents)
            {
                if (item.isDirectory())
                    findFiles(item, filter, incSubDirs, list);
            }
        } else
        {
            Pattern p = Pattern.compile(exp);
            for (File item : contents)
            {
                if (item.isFile() && p.matcher(item.getName()).matches())
                    list.add(item.getPath());
            }
        }

    }

}
 

Xclipse

Aktives Mitglied
Super Jungs!

Muss es etwas modifizieren, sieht aber sehr sehr gut aus!

Ich liebe euch. :lol:

Fetten DANK! :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I String nach Wort suchen Java Basics - Anfänger-Themen 6
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Java Mail: suchen von mehreren Emailadressen Java Basics - Anfänger-Themen 5
D Erste Schritte Wert im Array suchen Java Basics - Anfänger-Themen 12
B Suchen und sortieren Java Basics - Anfänger-Themen 10
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
C In ArrayList suchen Java Basics - Anfänger-Themen 6
G nach 9 - stelliger Nummer suchen Java Basics - Anfänger-Themen 7
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
Y Explizites Suchen Java Basics - Anfänger-Themen 13
G Zeichen suchen und Ausgeben. Java Basics - Anfänger-Themen 3
K String in String-Array suchen Java Basics - Anfänger-Themen 11
T Suchen in sortiertem Feld Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
L Name im Array suchen Java Basics - Anfänger-Themen 12
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
P Teilstring suchen Java Basics - Anfänger-Themen 3
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
A Nach dem Objekt suchen Java Basics - Anfänger-Themen 1
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
W .txt auslesen und nach schlüsselbegriffen suchen Java Basics - Anfänger-Themen 7
S Suchen in Arrays Java Basics - Anfänger-Themen 7
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
T String in Array suchen Java Basics - Anfänger-Themen 9
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Suchen und ersetzten mit \ ? Java Basics - Anfänger-Themen 9
A String in String suchen Java Basics - Anfänger-Themen 3
J Nach einem Wert suchen +/- x Java Basics - Anfänger-Themen 8
D Binäres Suchen Java Basics - Anfänger-Themen 11
N Weg suchen bei Adjazenzmatrix Java Basics - Anfänger-Themen 2
E Suchen mit Hashfunktion ?! Java Basics - Anfänger-Themen 7
C Binäres Suchen mit Rekursion Java Basics - Anfänger-Themen 5
I Erste Schritte Ein Zeichen in einem Array Suchen Java Basics - Anfänger-Themen 8
N Binär suchen: Java Basics - Anfänger-Themen 4
D In Hashtable suchen Java Basics - Anfänger-Themen 3
J In String suchen Java Basics - Anfänger-Themen 14
D Nach String "{" suchen Java Basics - Anfänger-Themen 4
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
M Notiz suchen-Programm Java Basics - Anfänger-Themen 3
F Zusammenhängend Komponente suchen(Graph) Java Basics - Anfänger-Themen 4
M Teilmatrix suchen Java Basics - Anfänger-Themen 16
B Java nach bestimmter dateiendung suchen Java Basics - Anfänger-Themen 6
B Element in Folge suchen Java Basics - Anfänger-Themen 7
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
R Datentypen In String nach String suchen und hinzufügen Java Basics - Anfänger-Themen 2
D Textdatei einlesen und darin suchen Java Basics - Anfänger-Themen 11
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
P char[] - suchen/ löschen Java Basics - Anfänger-Themen 6
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
C Objekt aus Liste suchen Java Basics - Anfänger-Themen 6
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
D In String suchen und extrahieren Java Basics - Anfänger-Themen 13
B Suchen nach Teilstring, um Text danach ausgeben Java Basics - Anfänger-Themen 11
H Höchsten int-Wert(key) aus einer Hashmap suchen Java Basics - Anfänger-Themen 19
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
Developer_X Strings in JTextarea suchen Java Basics - Anfänger-Themen 15
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
J Suchen nach ArrayObjekten Java Basics - Anfänger-Themen 17
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
G String suchen Java Basics - Anfänger-Themen 4
X Attribut in n Objekten suchen Java Basics - Anfänger-Themen 8
G String in Array suchen Java Basics - Anfänger-Themen 6
G Texte innerhalb von Dateien suchen Java Basics - Anfänger-Themen 9
P Text in Verzeichnisse suchen Java Basics - Anfänger-Themen 4
-horn- String im String suchen, womit? Java Basics - Anfänger-Themen 2
G String Suchen ersetzen replace_all() Java Basics - Anfänger-Themen 6
G Nach Datum suchen. Java Basics - Anfänger-Themen 4
M Rekursives suchen im TreeMenu Java Basics - Anfänger-Themen 10
G In DefaultTreeModel suchen Java Basics - Anfänger-Themen 2
G BST Suchbäume kleinsten Wert suchen Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
G Suchen in Map nach Schlüssel? Java Basics - Anfänger-Themen 2
G Methode in API suchen Java Basics - Anfänger-Themen 3
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1
R maximum in integer array suchen Java Basics - Anfänger-Themen 29

Ähnliche Java Themen

Neue Themen


Oben