verzeichnis auslesen?

Status
Nicht offen für weitere Antworten.

Bierhumpen

Bekanntes Mitglied
hi, gibt es die möglichkeit alles text dateien eines verzeichnisses auszulesen?

ohne zu wissen wie sie heißen? das er einfach alle txt datein einließt?
 
sry, wenn wir schonmal bei textdateien sind:

Ich habe 2 ComboBoxes, wie kann ich auch den beiden werten die aktiv sind eine Datei erstellen.

Wert1Wert2.txt beispielsweise
 
ehhm, naja,
den ersten wert auslesen, den zweiten auslesen, beide aneinanderhängen, ein ".txt" hinten dran und wenn du dann einen FileWriter mit dem File öffnest, müsste die Datei eigentlich schon da sein.

Habs nicht ausprobiert, also nicht flames, wenns nicht geht :wink:

mfg
jagdfalke
 
hallo, also um alle textdateien in einem verzeichnis auszulesen, kannst du so vorgehen:


Code:
//erstmal das verzeichnis anlegen
File dir = new File("verzeichnis");

//dann kannst du mittels list() alle Eintraege holen
String[] content = dir.list();

//jetzt das Array durchgehen:
for(String sdir : content){
    File dir = new File(sdir);
    if(dir.isFile() && dir.getName().endsWith(".txt")){ //eventuell vorher noch ein toLowerCase, wegen .TXT/.txt/.tXt...
        //ok, ist ne textdatei --> lesen
        readFile(dir.toString());
    }
}

public void readFile(String file){
try {
        BufferedReader in = new BufferedReader(new FileReader(file));
        String str;
        while ((str = in.readLine()) != null) {
            System.out.println(str);
        }
        in.close();
    } catch (IOException e) {
    }
}

//allerdings koennen auch verzeichnisse drin sein, dann musst du das rekursiv machen!

oder so ähnlich...was die zweite sache betrifft, sollte das hier helfen:

Code:
String[] items = {"item1", "item2"};
JComboBox cb = new JComboBox(items);
//....
String[] items1 = {"item3", "item4"};
JComboBox cb1 = new JComboBox(items1);
//....
String file = (String) cb.getSelectedItem() + (String)cb1.getSelectedItem() + ".txt";


try {
        BufferedWriter out = new BufferedWriter(new FileWriter(file));
        out.write("sonstwas");
        out.close(); //wichtig!
    } catch (IOException e) {
    }

ist so noch nicht lauffähig, den rest überlass ich dir ;-)

viele grüße
mörketid
 
bitte, bitte 😎

ach ja, du könntest zum testen auf die endung auch nen regex nehmen:

Code:
if(dir.getName().matches("(?i).txt")){...}

ist schneller und kürzer!

gruß
 
Mörketid hat gesagt.:
bitte, bitte 😎

ach ja, du könntest zum testen auf die endung auch nen regex nehmen:

Code:
if(dir.getName().matches("(?i).txt")){...}

ist schneller und kürzer!

gruß

Warum nicht einfach nen FileFilter? Oder wenn dann dir.getName().endsWith(".txt");. Ist beides bei weitem nicht so performancelastig wie n regex :autsch:
 
hm ... joa wie erklärt man in ein paar Sätzen Regex :shock: .

Sehr vereinfacht ausgedrückt sind das reguläre Ausdrücke, die unverändert in vielen Sprachen eingesetzt werden können, um den Text nach bestimmten Strukturen filtern zu können.

Braucht aber n bisschen Rechenpower weswegen hier die FileFilter wie in dem verlinktem Thread gezeigt bzw. die

Code:
file.getName().toLowerCase().endsWith(".txt");

imho schneller sein dürfte. Außerdem sollte man sich imho als Anfänger (berichtige mich wenn ich falsch liege 😉 ) erstmal auf die leichtere Lösung beschränken bevor man alles durcheinander bringt 😉 .
 
hi, ich meinte auch eher schneller getippt 🙂. kommt aber auch auf die regex engine an...was wird da in java verwendet, also dfa oder nfa, oder was sonst?

viele grüße
 
Achso, joa schneller getippt ist es allemal 😀 . Mit der Engine kann ich dir nicht weiterhelfen, kann mir aber auch kaum vorstellen, dass ein regulärer Ausdruck schneller ist, als die Überprüfung der letzten 4 Zeichen 😉 .
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben