# Zwischen Datei und Verzeichnis unterscheiden.



## Guest (15. Okt 2008)

Hallo!

Kleines Problem: Wie kann ich zwischen ein Pfad und einer Datei unterscheiden?

Möchte gerne überprüfen, ob das Verzeichnis lokal existiert.
Falls dies nicht der Fall ist, so soll es per .mkdirs() angelegt werden.
Dafür brauche ich jedoch nur den Verzeichnisnamen. 
Gibt es dazu eine Lösung seitens JAVA (Standard-Lib)?
file.getPath() hilft mir leider nicht weiter. 

Code zum "testen":


```
static public void test()
{
    // Datei existiert nicht
    String filename = "d:/tmp/test/michGibtEsNicht.txt";
    File file = new File(filename);

    System.out.println("Path: " + file.getPath());
    System.out.println("File: " + file.getName());
}
```

Ausgabe auf der Console:

Path: d:\tmp\test\michGibtEsNicht.txt
File: michGibtEsNicht.txt


----------



## SlaterB (15. Okt 2008)

http://java.sun.com/javase/6/docs/api/java/io/File.html

alle Methoden mal anschauen?
insbesondere die mit is..()


----------



## Guest (15. Okt 2008)

Hab ich schon. Hilft mir nur nichts, da das File Object eine "Referenz" auf die lokale Platte ist.
Somit nicht anwendbar...

Idee war ursprünglich:


```
static public void test3()
    {
        File file = new File("d:/tmp/diesesVerzeichnisGibtEsNochNicht/test.txt");
        File dirPath = new File(file.getPath());

        if(!dirPath.exists())
        {
            try
            {
                dirPath.mkdirs();
            }
            catch(Exception ex)
            {
            }
        }

        // Datei abarbeiten, etc....
        FileManager.copyFile(dirPath, file);
    }
```

Problem jedoch:


```
static public void test2()
    {
        // Verzeichnis existiert nicht
        File dirPath1 = new File("d:/tmp/diesesVerzeichnisGibtEsNochNicht/michGibtEsAuchNicht/");
        // Verzeichnis existiert
        File dirPath2 = new File("d:/tmp/");

        if(dirPath1.isDirectory())
        {
            System.out.println("you win!");
        }
        else
        {
            System.out.println("you sucks!");
        }
        if(dirPath2.isDirectory())
        {
            System.out.println("you win!");
        }
        else
        {
            System.out.println("you sucks!");
        }
    }
```


----------



## maki (15. Okt 2008)

Was ist dein Problem?


----------



## SlaterB (15. Okt 2008)

hmm, habe irgendwie gelesen, dass es um isDirectory() geht,

zur Existenz müssen wir ja nicht das gleiche Spiel spielen, gibts aber auch:
file.exists()

oder was war jetzt nochmal genau die Frage? 

(edit: mist, exists() kennst du auch schon)


----------



## lhein (15. Okt 2008)

Watn datn?


```
File file = new File("d:\test\test.txt");
File folder = file.getParentFile();

System.out.println(file.getAbsolutePath() + " is a " + (file.isFile() ? "file" : "folder") + " !");
System.out.println(folder.getAbsolutePath() + " is a " + (folder.isFile() ? "file" : "folder") + " !");
```


----------



## Guest (15. Okt 2008)

So. Hab es anders gelöscht. Danke für die Hilfe und Mühen!


```
static public void copyFile(String sourceFile, String destinationDir)
    {
        File srcFile = new File(sourceFile);
        File destDir = new File(destinationDir);
        copyFile(srcFile, destDir);
    }
    
    static public void copyFile(File sourceFile, File destinationDir)
    {
        createDirectory(destinationDir);
        
        String fileSeparator = "";
        try
        {
            fileSeparator = System.getProperty("file.separator");
        }
        catch(Exception ex)
        {
        }
        
        String destFile = destinationDir.getPath() + fileSeparator + sourceFile.getName();
        
        byte[] binFileCache = readFile(sourceFile);
        writeFile(binFileCache, destFile);
    }
    
    
    static public void createDirectory(String path) 
    {
        File directory = new File(path);
        createDirectory(directory);
    }
    
    static public void createDirectory(File path)
    {
        try
        {
            if(!path.exists())
            {
                path.mkdirs();
            }
        }
        catch(Exception ex)
        {
        }
    }
```


----------



## lhein (15. Okt 2008)

Ich sehe schon....detailierte Problembeschreibungen sind nicht unbedingt Dein Steckenpferd


----------



## Guest (15. Okt 2008)

Bin halt Mathematiker ....  :roll:  :lol:


----------



## maki (15. Okt 2008)

Anonymous hat gesagt.:
			
		

> Bin halt Mathematiker ....  :roll:  :lol:


Dachte die würden Dinge nutzten die es schon gibt anstatt alles selbest neu zu erfinden 

http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html


----------



## snowfox8888 (15. Okt 2008)

Autsch....  :shock:

In erster Linie geht es mir im Moment darum die Sprache zu "lernen" und 
mal die ganze Theorie (Softwareengineering, Objectorientierte Analyse, etc.)
in der Praxis zu üben (Semesterprojekt). Aber tut schon weh, wen man sieht,
das es dies alles schon gibt...danke Mike ;-)

Dennoch danke für den Link. Sind einige interessante "Dinge" dabei :!:


----------



## maki (15. Okt 2008)

>> In erster Linie geht es mir im Moment darum die Sprache zu "lernen" 

Auch wieder richtig


----------

