Dateiauswahl in Java verbessern

Gast #2917368
Lesenswert?

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 #2917412
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren