# Pfad bzw. Namen einer Datei auslesen



## JimK (8. Okt 2010)

Hallo,

ich muss ein kleines Programm schreiben, dass Daten aus einer Datei ausliest, die ich auswähle. Die Daten werden analysiert und in eine LinkedList gespeichert. Das funktioniert soweit alles, aber ich möchte gerne den Dateipfad oder -namen auslesen und speichern um eine Abfrage zu erstellen, ob diese Datei schon eingelesen wurde. Nur weiß ich nicht wie ich den Pfad bzw. Dateinamen auslesen kann. Kann mir dabei jemand helfen?

LG JimK


----------



## gman (8. Okt 2010)

Hi,

du wirst doch sicherlich irgendwo in deinem Programm ein File-Objekt haben, oder? Das bietet Methoden
die dir das geben was du brauchtst:


```
File file = new File("test.txt");
    String path = file.getAbsolutePath(); // der ganze Pfad zur Datei halt
    String name = file.getName(); // Name der Datei oder des Ordners
```

Nachzulesen in der Java-Api-Doc unter "java.io" -> "File"


----------



## JimK (8. Okt 2010)

Die Code hab ich schon in meinem Buch gefunden, aber da hab ich es so verstanden, dass ich so nur eine Datei erstellen kann.

Hier ein kleiner Ausschnitt aus meiner Einlesen Methode:


```
public static void Einlesen() {
        try {

            String line;
            /*FileReader fr = new FileReader("test.txt");
            LineNumberReader f = new LineNumberReader(fr);*/
            
            JFileChooser chooser = new JFileChooser();
            int returnVal = chooser.showOpenDialog(null);
            if(returnVal == JFileChooser.APPROVE_OPTION) {
                BufferedReader f = new BufferedReader(new FileReader(chooser.getSelectedFile().getAbsoluteFile()));
            
              
            

            Messpunkt maxhw = new Messpunkt(0.0, 0.0, 0.0);
            Messpunkt maxrw = new Messpunkt(0.0, 0.0, 0.0);
            Messpunkt maxh = new Messpunkt(0.0, 0.0, 0.0);
            Messpunkt minhw = new Messpunkt(0.0, 0.0, 0.0);
            Messpunkt minrw = new Messpunkt(0.0, 0.0, 0.0);
            Messpunkt minh = new Messpunkt(0.0, 0.0, 0.0);

            int z = 0;
            for(int i=0; i<7; i++)
            {
            
            while (true) {

                z++;
                line = f.readLine();
                if (line == null)
                    break;
                StringTokenizer tok = new StringTokenizer(line);
                String b1 = tok.nextToken();
                Double s1 = Double.valueOf(b1);
                String b2 = tok.nextToken();
                Double s2 = Double.valueOf(b2);
                String b3 = tok.nextToken();
                Double s3 = Double.valueOf(b3);
                Messpunkt a = new Messpunkt(s1, s2, s3);

                if (z == 1) {
                    maxhw = a;
                    maxrw = a;
                    maxh = a;
                    minhw = a;
                    minrw = a;
                    minh = a;

                }

                if (a.hochwert > maxhw.hochwert) {
                    maxhw = a;
                }

                if (a.rechtswert > maxrw.rechtswert) {
                    maxrw = a;
                }

                if (a.hoehe > maxh.hoehe) {
                    maxh = a;
                }

                if (a.hochwert < minhw.hochwert) {
                    minhw = a;
                }

                if (a.rechtswert < minrw.rechtswert) {
                    minrw = a;
                }

                if (a.hoehe <= minh.hoehe) {
                    minh = a;
                }
                
            
            }
                
            }
                list.add(maxhw);
                list.add(maxrw);
                list.add(maxh);
                list.add(minhw);
                list.add(minrw);
                list.add(minh);

            System.out.println("MAX Hochwert:     " + maxhw);
            System.out.println("MAX Rechtswert: " + maxrw);
            System.out.println("MAX Höhe:     " + maxh);

            System.out.println("Min Hochwert:     " + minhw);
            System.out.println("Min Rechtswert: " + minrw);
            System.out.println("Min Höhe:     " + minh);

            f.close();
        }} catch (IOException e) {
            System.out.println("Fehler beim Lesen der Datei");
        }
    }
```

Wie kann ich jetzt deinen Java Code so einfügen, dass mein Programm den Pfad der Datei, die ich einlese, in ein seperates Feld schreibt? Theoretisch ist doch nur file.getName() für mich relevant oder?

Danke für die schnelle Antwort.


----------



## Schandro (8. Okt 2010)

```
chooser.getSelectedFile()
```
Gibt dir das File-Object welches auf die Datei zeigt die der User im JFileChooser ausgewählt hat.

Also gibt dir:

```
chooser.getSelectedFile().getAbsoluteFile()
```
Den kompletten Pfad zur ausgewählten Datei als String zurück...


----------



## JimK (8. Okt 2010)

Also wenn ich das jetzt richtig verstehen müsste das Object f den Pfad enthalten?


```
BufferedReader f = new BufferedReader(new FileReader(chooser.getSelectedFile().getAbsoluteFile()));
```


----------



## gman (9. Okt 2010)

Nicht ganz:


```
File selectedFile = chooser.getSelectedFile().getAbsoluteFile();
    BufferedReader reader = new BufferedReader(new FileReader(selectedFile));
```

Das Objekt "selectedFile" kann dir jetzt die Informationen über den Pfad geben.

EDIT: Noch ein bischen mehr Informationen: Das Objekt "f" aus deinem Beispiel
ist vom Typ "BufferredReader". Klick mal auf den Link zu "BufferedReader" in
einem von den Beispielen, dann kommst du direkt zur Javadoc der Klasse und
kannst nachschauen welche Methoden die Klasse bereitstellt. Dasselbe kannste
dann für "File" machen.


----------



## JimK (9. Okt 2010)

Super, jetzt funktioniert es. Danke!!!


----------

