# java neue datei erstellen



## Mischka (25. Mai 2010)

moin,
ich weiss, dass es ein ganz einfaches Anfängerthema ist, aber ich sitzt jetzt schon ewig an diesem kleinen!!! schritt und krieg es einfach nicht gebacken.


```
if (!new File(System.getProperty("user.home") + "/Documents").exists()) {
                new File(System.getProperty("user.home") + "/Documents").mkdir();
            }

            if (!new File(System.getProperty("user.home") + "/Documents/mau").exists()) {
                new File(System.getProperty("user.home") + "/Documents/mau").mkdir();
            }

            if (!new File(System.getProperty("user.home") + "/Documents/mau" + varsPath).exists()) {
                System.out.println(System.getProperty("user.home") + "/Documents/mau" + varsPath);


                try {
                    BufferedWriter writer = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "/Documents/mau" + varsPath));
                    writer.write("a");
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
//                 try {
//                     new PrintWriter(System.getProperty("user.home") + "/Documents/mau" + varsPath);
//                } catch (FileNotFoundException ex) {
//                    Logger.getLogger(Gui.class.getName()).log(Level.SEVERE, null, ex);
//                }

            }
```

fehler tritt momentan in zeile 14 auf.
der gibt mir egal ob obiges beispiel, oder das auskomentierte.
es kommt immer die selbe exception:

```
java.io.FileNotFoundException: C:\Users\jom\Documents\mau\Documents\mau\vars.txt (Das System kann den angegebenen Pfad nicht finden)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at java.io.FileWriter.<init>(FileWriter.java:46)
        at Gui.<init>(Gui.java:117)
        at Main.main(Main.java:19)
```

bitte helft mir.
bin am verzweifeln.


----------



## The_S (25. Mai 2010)

Du legst hier alles an (mal davon abgesehen, dass du das auch hättest leichter haben können)



Mischka hat gesagt.:


> ```
> if (!new File(System.getProperty("user.home") + "/Documents").exists()) {
> new File(System.getProperty("user.home") + "/Documents").mkdir();
> }
> ...



Überprüfst hier, ob das neue Verzeichnis NICHT existiert (ich vermute du wolltest eher überprüfen, ob es existiert. Vermutlich ist dein varsPath auch falsch, da varsPath ja scheinbar noch einmal das Selbe enthält wie das, was du vorher überprüft hast. Du hängst es aber an varsPath noch einmal hinten dran):



Mischka hat gesagt.:


> ```
> if (!new File(System.getProperty("user.home") + "/Documents/mau" + varsPath).exists()) {
> ```



Gibst das Verzeichnis aus



Mischka hat gesagt.:


> System.out.println(System.getProperty("user.home") + "/Documents/mau" + varsPath);



Und wunderst dich, warum er hier auf die Schnauze fällt, obwohl du vorher durch deine IF-Bedingung explizit festgestellt hast, dass das Verzeichnis nicht existiert:



Mischka hat gesagt.:


> BufferedWriter writer = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "/Documents/mau" + varsPath));



Noch Fragen?


----------



## Mischka (25. Mai 2010)

The_S hat gesagt.:


> Du legst hier alles an (mal davon abgesehen, dass du das auch hättest leichter haben können)


Ja, ich gehe davon aus, das es möglicherweise keinen Documents-verzeichniss und mau-verzeichniss gibt.
Wenn du eine bessere möglichkeit kennst das zu bewerkstelligen, dann nenn sie mir bitte.



The_S hat gesagt.:


> Überprüfst hier, ob das neue Verzeichnis NICHT existiert (ich vermute du wolltest eher überprüfen, ob es existiert. Vermutlich ist dein varsPath auch falsch, da varsPath ja scheinbar noch einmal das Selbe enthält wie das, was du vorher überprüft hast. Du hängst es aber an varsPath noch einmal hinten dran):



ich überprüfe ob das verzeichnis nicht existiert, damit ich es in diesem fall anlegen kann, was schon ganz gut funktioniert, nur das anlegen der Datei selber funktioniert nicht.
in varsPath steht "/vars.txt".



The_S hat gesagt.:


> Gibst das Verzeichnis aus
> 
> 
> 
> Und wunderst dich, warum er hier auf die Schnauze fällt, obwohl du vorher durch deine IF-Bedingung explizit festgestellt hast, dass das Verzeichnis nicht existiert:


Die ausgabe funktioniert tadelos, da ich ja nur ein paar strings aneinanderkette und es dabei egal ist, ob der pfad tatsächlich existiert.


The_S hat gesagt.:


> Noch Fragen?



?


----------



## agentone (25. Mai 2010)

@The_S: Überleg dir nochmal, was du geschrieben hast. 

Nun zu dir Mischka:

Deine Fehlermeldung war: 

```
java.io.FileNotFoundException: C:\Users\jom\Documents\mau\Documents\mau\vars.txt (Das System kann den angegebenen Pfad nicht finden)
```

Dein Code zum Erstellen des Datei-Pfades war:

```
System.getProperty("user.home") + "/Documents/mau" + varsPath
```

Hier ist allerdings ein Widerspruch: 
1.) user.home="C:\Users\jom"
2.) "/Documents/mau"
3.) varsPath="/vars.txt" (Laut deiner Aussage!)

Wie soll dann allerdings eine Fehlermeldung mit zweimal \Documents\mau entstehen? Ich glaube, in varsPath steht nicht nur "/vars.txt"!


----------



## The_S (26. Mai 2010)

Mischka hat gesagt.:


> Ja, ich gehe davon aus, das es möglicherweise keinen Documents-verzeichniss und mau-verzeichniss gibt.
> Wenn du eine bessere möglichkeit kennst das zu bewerkstelligen, dann nenn sie mir bitte.



Pfad, den du haben möchtest, in dein File speichern und dann File#mkdir*s*. Legt die komplette Verzeichnisstruktur an. Wenn du den Pfad komplett mit Dateinamen hast, dann File#getParentFile#mkdirs.



Mischka hat gesagt.:


> ich überprüfe ob das verzeichnis nicht existiert, damit ich es in diesem fall anlegen kann, was schon ganz gut funktioniert, nur das anlegen der Datei selber funktioniert nicht.
> in varsPath steht "/vars.txt".



Nee. Du legst nichts an. Du legst die Verzeichnisse zuvor an, aber nicht das, was in varsPath steht. Und wie agentone schon geschrieben hat, kann es nicht sein, dass in varsPath nur "/vars.txt" steht.



Mischka hat gesagt.:


> Die ausgabe funktioniert tadelos, da ich ja nur ein paar strings aneinanderkette und es dabei egal ist, ob der pfad tatsächlich existiert.



Das hat ja auch keiner gesagt. Nach der Ausgabe fliegt dein Programm auf die Schnauze, eben WEIL dein Pfad entweder (was ich eher vermute) falsch zusammengebaut wurde, oder weil du ihn nicht richtig angelegt hast.



Mischka hat gesagt.:


> ?



!



agentone hat gesagt.:


> @The_S: Überleg dir nochmal, was du geschrieben hast.



OK. Hab noch einmal drüber nachgedacht. Und jetzt  ?


----------



## agentone (26. Mai 2010)

> OK. Hab noch einmal drüber nachgedacht. Und jetzt ?



Irgendwie habt ihr aneinander vorbeigeredet. (Komisch...)
Aber is jetzt auch egal, Mischka sollte besser wieder mal was sagen, sonst kommen wir hier auch nicht weiter.


----------



## The_S (27. Mai 2010)

agentone hat gesagt.:


> Irgendwie habt ihr aneinander vorbeigeredet.



Findest du? Finde ich nicht. Und selbst wenn dem so wäre, warum sollte ich noch einmal darüber nachdenken, was ich geschrieben habe? Bahnhof am Morgen ...


----------

