Dateiauswahl in Java verbessern

Gast #2917368
Moin,

ich habe zwei Probleme.

1.
Ich habe unten mal meine Dateiauswahlmethode angehängt. Ich will damit 
immer die Dateien in einen Ordner komplett auswählen. Dazu benötige ich 
dann nur den Ordner.

Diese Methode funktioniert soweit. Aber gibt es eine Möglichkeit, dass 
vorhandene Ordner gefiltert werden. Ich habe zwei grundsätzlich 
verschiedene Ordner. Die einen enthalten immer ein großes T und die 
anderen ein großes U z.B.:

001_010112_Werte_T
001_010112_Werte_U
002_020112_Werte_T
002_020112_Werte_U
...

2.
Die Dateienamen landen letzlich in einer Collection.
1
private ArrayList<File> agilentFiles = new ArrayList<File>();

Allerdings über das File [] dateien - Array. Geht das auch eleganter?


Gruß
Holger

1
private boolean temperaturdateienAuswaehlen()
2
    {
3
    JFileChooser dateiOdner = null;
4
    dateiOdner = new JFileChooser(dateipfadRotronicHC2STemp); 
5
        
6
    dateiOdner.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
7
      dateiOdner.setMultiSelectionEnabled(false);
8
      dateiOdner.setDialogTitle("Ordner der Daten der Temperaturkalibrierung auswählen:");
9
      dateiOdner.setDialogType(JFileChooser.OPEN_DIALOG);
10
      
11
      dateiOdner.setSelectedFile(null);
12
      
13
      int ordnerAuswahl = dateiOdner.showOpenDialog(null);
14
      
15
      File ordnerKomplett = null;
16
      
17
      if (ordnerAuswahl == JFileChooser.APPROVE_OPTION) 
18
        {                      
19
            ordnerKomplett = dateiOdner.getSelectedFile();
20
        } 
21
        else
22
        {
23
            return false;
24
        }
25
      
26
      File [] dateien;      
27
      
28
      dateien = ordnerKomplett.listFiles(new FilenameFilter() 
29
      {
30
          public boolean accept(File d, String name) 
31
          {
32
            return name.toLowerCase().contains(".csv");
33
        }
34
      }); 
35
      
36
      for(File dateiName: dateien)
37
      {
38
        agilentFiles.add(dateiName);
39
        
40
        auswertungdateiPfad = dateiName.toString().substring(0,37);
41
      }
42
      
43
      return true;
44
    }
Persönliche Seite
Holger schrieb:
> Aber gibt es eine Möglichkeit, dass
> vorhandene Ordner gefiltert werden
Du kannst ja mal probieren ob das über FileFilter geht, ist aber 
normalerweise nur für Dateien, aber für directories sollte das ebenso 
gehen:
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/filechooser/FileFilter.html

Holger schrieb:
> Allerdings über das File [] dateien - Array. Geht das auch eleganter?
Inwiefern? Arrays.asList(...) "konvertiert" dir das Array in eine 
Collection falls du das meinst.

Ein paar Anmerkungen:
1) Du splittest die Variablen teilweise unötiggerweise.
2) wenn du auf eine Endung prüfen willst solltes du lieber mit 
endsWith arbeiten anstelle von contains
3) Anstelle von true/false besser die Collection oder null (oder 
eventuell sogarr eine leere Collection) zurückgeben, dann sparst du dir 
ggf. unötige Member und bist flexibler.
4) du solltest prüfen ob ordnerKomplett eine gültiger Ordner ist (!=null 
und exits).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.