Forum: PC-Programmierung Dateiauswahl in Java verbessern


von Holger (Gast)


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
    }

von Läubi .. (laeubi) Benutzerseite


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).

von Holger (Gast)


Lesenswert?

Moin Läubi,

es klappt!



Gruß
Holger

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.