Zwischen Datei und Verzeichnis unterscheiden.

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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":

Code:
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
 
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:

Code:
    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:

Code:
    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!");
        }
    }
 
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)
 
Watn datn?

Code:
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") + " !");
 
So. Hab es anders gelöscht. Danke für die Hilfe und Mühen!

Code:
    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)
        {
        }
    }
 
Ich sehe schon....detailierte Problembeschreibungen sind nicht unbedingt Dein Steckenpferd 😀
 
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 :!:
 
>> In erster Linie geht es mir im Moment darum die Sprache zu "lernen"

Auch wieder richtig 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben