Testen auf Existenz des Verzeichnisses

Wambui

Aktives Mitglied
Hallo,

ich habe mit einer IF-Abfrage ein Problem, dass mich verzweifelt. Dazu folgender Test-Code, mit dem ich versuche, mein Problem zu lösen:

Java:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class TestRun {

    public static void main(String[] args) {
        String dir = "Test";
        String directory = System.getProperties().getProperty("user.home")+File.separator+dir;
        
        Path dirPath = Paths.get(directory); 
        if (!(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists())) {
            try {
                System.out.println(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists());
                System.out.println("Verzeichnis wird angelegt");
                dirPath = Files.createDirectory(dirPath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists());
            System.out.println("Verzeichnis ist bereits angelegt");
        }
    }

}
Es soll zuerst geprüft werden, ob bereits ein bestimmtes Verzeichnis existiert. Und wenn es nicht existiert
Java:
if (!(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists())) {
dann lege das Verzeichnis an.
Gleichzeitig lasse ich mir den Boolean-Wert der Abfrage in beiden Fällen anzeigen, sowie einen erklärenden Text.
Wenn das Programm zum ersten Mal abläuft, dann erhalte ich
false
Verzeichnis wird angelegt
Die richtige Schleife wird ausgeführt.
Wenn ich das Programm ein zweites Mal aufführe, ohne das Verzeichnis "Test" zu löschen, bekomme ich anstelle von
true
Verzeichnis ist bereits angelegt
folgende Ausgabe mit stacktrace:
false
Verzeichnis wird angelegt
java.nio.file.FileAlreadyExistsException: /home/wambui/Test
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:88)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:383)
at java.nio.file.Files.createDirectory(Files.java:628)
at com.linuxmaker.calculator.TestRun.main(TestRun.java:20)

Ich verstehe nicht, warum die if-else-Schleife nicht richtig funktioniert.

Grüße
Wambiu
 
Zuletzt bearbeitet von einem Moderator:

kaoZ

Top Contributor
if (!(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists())) {


lass das ! mal weg, was passiert dann ?

Normalerweise , dürfte wenn das Verzeichnis nicht existiert nicht true zurück gegeben werden.

Java:
	public Foo(){
		
		if(!new File("H:Schrott").exists()) {
			System.out.println("true");
		}
		else{
			System.out.println("false");
		}
	}
	
	public static void main(String[] args){
		new Foo();
	}
}

Der File existiert nicht und trotzdem wird true zurückgegeben, du musst das ! weglassen

sonst prüfst du folgendes

Code:
wenn Nicht ( verzeichnis nicht existiert){.....}

das führt dazu das !false = true geliefert wird sprich ein toggle like

Java:
boolean b;

public void toggle(){
   b = !b;
}
 
Zuletzt bearbeitet:

stg

Top Contributor
So wie ich das sehe kommst du bei der Verwendung von dir und directory durcheinander.

Schreib mal in Zeile 14 z.B. statt
Java:
if (!(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists())) {

einfach nur
Java:
 if (!(new File(directory).exists())) {

In Zeile 16 und 23 das gleiche..
 

Flown

Administrator
Mitarbeiter
Wenn du schon NIO.2 verwendest, dann bitte nicht mit IO mischen.

Verwende lieber die Files Klasse um zu überprüfen, ob ein Directory existiert oder nicht.

Dann sieht das in etwa so aus:

Java:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DirectoryExist {

  public static void main(String[] args) {
    String dir = "Test";
    Path dirPath = Paths.get(System.getProperties().getProperty("user.home"), dir);

    if (!Files.exists(dirPath)) {
      try {
        System.out.println(Files.exists(dirPath));
        System.out.println("Verzeichnis wird angelegt");
        dirPath = Files.createDirectory(dirPath);
      } catch (IOException e) {
        e.printStackTrace();
      }
    } else {
      System.out.println(Files.exists(dirPath));
      System.out.println("Verzeichnis ist bereits angelegt");
    }
  }
}

PS: if-Schleifen gibt es nicht. Nur if-Abfragen!
 
Zuletzt bearbeitet:

Wambui

Aktives Mitglied
Besten Dank,

weitergeholfen hat mir der Hinweis von Flown mit der Benutzung von Files unter NIO.2. Das löst mein Problem, vor allem mit Files.noExists(Path, options), da ich die Abfrage nur durch laufen will, wenn das Verzeichnis nicht existiert. Der Else-Block war nur für mich, um zu sehen, was im anderen Fall passiert.

Apropos - falls das ein Moderator liest:
Ich fände es sehr praktikabel, wenn man hier im Forum Erledigt-Flags setzen könnte oder zumindest die Original-Überschrift bearbeiten könnte.


Grüße und besten Dank

Wambui
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
U Sortierung in collections testen Java Basics - Anfänger-Themen 11
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
nonickatall Ausführbarkeit von Code testen bzw. Remote Debugging Java Basics - Anfänger-Themen 4
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
J Womit kann ich diese Methode testen? Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
K Testen in BlueJ Java Basics - Anfänger-Themen 2
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
G Testen mit JUnit Java Basics - Anfänger-Themen 4
J Worte auf Gültigkeit bzgl. Alphabet testen Java Basics - Anfänger-Themen 1
T OOP Zwei Klassen Testen (Arrary Iterieren) Java Basics - Anfänger-Themen 6
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
K Testen von Methoden Java Basics - Anfänger-Themen 5
kilopack15 Java Array Skalarprodukt testen Java Basics - Anfänger-Themen 21
K Testen von Methoden Java Basics - Anfänger-Themen 1
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
I Programm testen, aber wie? Java Basics - Anfänger-Themen 14
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
P OOP Testen ob 2 Strings gleich sind Java Basics - Anfänger-Themen 8
B Void Mehoden Testen Java Basics - Anfänger-Themen 13
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
E Arrays testen Java Basics - Anfänger-Themen 4
D Assertion Error beim Testen Java Basics - Anfänger-Themen 4
T Junit --Exception testen Java Basics - Anfänger-Themen 15
S Sortierverfahren - wie Stabilität testen (im array) Java Basics - Anfänger-Themen 3
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
B Testen eines Bridge-Spiels Java Basics - Anfänger-Themen 5
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
H Input/Output Testen ob Datei leer Java Basics - Anfänger-Themen 14
C Methode Testen Java Basics - Anfänger-Themen 12
J Programm in main Methode testen Java Basics - Anfänger-Themen 29
C Klammerung testen Java Basics - Anfänger-Themen 10
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23
xehpuk In JUnit über eigenen Thread testen Java Basics - Anfänger-Themen 3
? Fehler bei Testen Java Basics - Anfänger-Themen 17
vandread Internationalisierung von einem Projekt testen? Java Basics - Anfänger-Themen 2
F Interface Testen Java Basics - Anfänger-Themen 5
T Methoden Testen und schaun ob richtiges Ergebnis? Java Basics - Anfänger-Themen 5
J Testen Java Basics - Anfänger-Themen 3
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
B OOP Testen - JUnit Java Basics - Anfänger-Themen 30
J Hash-Maps / ArrayLists testen Java Basics - Anfänger-Themen 12
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
G netzwerkapplikationen testen Java Basics - Anfänger-Themen 7
S Testen ob ein String ein Datum ist. Java Basics - Anfänger-Themen 5
T Testen ob eine Zahl im array doppel vorkommt. Java Basics - Anfänger-Themen 7
G *.java Datei mit Editor starten und testen Java Basics - Anfänger-Themen 6
reno Testen ob String leer ist Java Basics - Anfänger-Themen 12
G testen ob int gleich null Java Basics - Anfänger-Themen 15
G testen ob in String zahl Java Basics - Anfänger-Themen 10
K Program Testen mit Macintosh Java Basics - Anfänger-Themen 2
F Testen ob Double-Variable Java Basics - Anfänger-Themen 13
G SSL Verbindung testen? Java Basics - Anfänger-Themen 1
G Methoden mit Junit testen? Java Basics - Anfänger-Themen 2
M Kostenloser webspace zum testen von Javaprogrammen ? Java Basics - Anfänger-Themen 3
A mit Junit testen Java Basics - Anfänger-Themen 7
G Baum testen Java Basics - Anfänger-Themen 20
H Testen, ob Thread schläft Java Basics - Anfänger-Themen 3
S Testen ob ein Char Array noch nicht belegt ist! Java Basics - Anfänger-Themen 3
M Testen ob ein Sample noch abgespielt wird Java Basics - Anfänger-Themen 6
G wie eine selbstgeschriebene Klasse testen? Java Basics - Anfänger-Themen 15
P programm testen ohne main-funktion Java Basics - Anfänger-Themen 19
B Klammerung testen Java Basics - Anfänger-Themen 12
T Prüfung auf Existenz eines Dialogfensters Java Basics - Anfänger-Themen 5
O Überprüfung auf Existenz einer Methode Java Basics - Anfänger-Themen 6
G Existenz eines Files Java Basics - Anfänger-Themen 1
N Auomatisiertes löschen von Bilddateien, Erkennung durch Existenz in Text Java Basics - Anfänger-Themen 13
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
N Bitte um Hilfe - zyklisch Existenz einer Datei prüfen Java Basics - Anfänger-Themen 21
M Variable auf Existenz prüfen Java Basics - Anfänger-Themen 7
M filenamen auf existenz prüfen Java Basics - Anfänger-Themen 17
O Auf Existenz prüfen Java Basics - Anfänger-Themen 18
O Existenz einer Datei im jar-Archiv überprüfen Java Basics - Anfänger-Themen 2
B Pfad auf Existenz überprüfen Java Basics - Anfänger-Themen 10
B Existenz von Objekt prüfen Java Basics - Anfänger-Themen 2
S Verzeichnis auf Existenz prüfen + Inhalt holen Java Basics - Anfänger-Themen 9
Z Prüfung auf existenz einer Variablen Java Basics - Anfänger-Themen 4
A Existenz eines Files abfragen Java Basics - Anfänger-Themen 13
S Rekursives Durchlaufen eines Verzeichnisses - AccessDeniedException behandeln Java Basics - Anfänger-Themen 1
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
F Alle Dateien eines Verzeichnisses einlesen Java Basics - Anfänger-Themen 3
S Alle Bilder eines Verzeichnisses laden Java Basics - Anfänger-Themen 3
V Problem beim Inhalt eines Verzeichnisses anzeigen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben