Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich experimentiere gerade mit der Klasse File herum.
Nun habe ich dabei versehentlich eine nicht vorhandene Datei an den Konstruktor von File übergeben.
D.h. so etwas:
file file1=new file("keinedatei");
Im weiteren Verlauf wurde in diese Datei ein Text eingelesen und anschließend ausgegeben. Alles hat funktioniert. Woran liegt das? Wird Temporär eine Datei "keinedatei" erstellt?
Nein die Datei wird nicht temporär erstellt, sondern wird in deinem Ausführungsverzeichnis(woraus du dein Java-Programm startest) erstellt, falls es nicht vorhanden ist.
Nein die Datei wird nicht temporär erstellt, sondern wird in deinem Ausführungsverzeichnis(woraus du dein Java-Programm startest) erstellt, falls es nicht vorhanden ist.
Stimmt, aber mit den meisten Methoden, mit denen man in ein File schreibt, wird das File erzeugt. Nachdem schon in das File geschrieben wurde, heißt das automatisch, dass es erstellt wurde.
Stimmt, aber mit den meisten Methoden, mit denen man in ein File schreibt, wird das File erzeugt. Nachdem schon in das File geschrieben wurde, heißt das automatisch, dass es erstellt wurde.
Bevor man in eine File schreiben kann muss man sie erst mit File.createNewFile(); erstellen. Wenn man versucht in eine File zu schreiben bevor man das macht bekommt man eine FileNotFoundException.
Wie schon oben beschrieben, das File wird automatisch erzeugt, wenn man hineinschreibt! Hier nachzulesen beim FileWriter (resp. FileOutputStream).
Schon klar das es erzeugt wird, aber das muss nicht explizit stattfinden.
Wie schon oben beschrieben, das File wird automatisch erzeugt, wenn man hineinschreibt! Hier nachzulesen beim FileWriter (resp. FileOutputStream).
Schon klar das es erzeugt wird, aber das muss nicht explizit stattfinden.
Ja, es wird tatsächlich automatisch erzeugt (nicht temporär). Ich habe das File nicht gleich bemerkt.
Ruft der Konstruktor dann irgendeine Methode auf die das File erzeugt? Bzw. wie läuft dies intern ab? Weil eigentlich wird ja nur ein Objekt zu einem zugehörigen File erstellt (laut dieser Doc.), oder verstehe ich da etwas falsch?
Ich würde immernoch gerne wissen wieso ein File (beim aufruf von new file) erzeugt wird. Bzw. wo man solche Details nachlesen kann, denn aus der Doc geht das für mich nicht hervor.
Das File wird nicht beim Konstruktor erstellt. Stells dir vor wie ein Zeiger. Erst wenn du dann Operationen ausführst, wie schreiben (deshalb auch die ganze Zeit die Rede von den OutputStreams) wird das File dann automatisch erzeugt!
Ja du hast recht, der FileWriter erzeugt die Datei. Aber wo kann ich das nachlesen?
Der von dir gepostete Link erklärt dies für mich nicht. Es wird lediglich definiert, dass zu einer gegebenen Datei ein Objekt erzeugt wird. Was passiert wenn keine solche Datei vorhanden ist wird nicht erklärt. Lediglich indirekt in der "Throws" Klausel wird angedeutet, dass eine Datei erzeugt wird, falls nicht vorhanden. Aber das sollte doch auch irgendwo explizit dokumentiert sein?
A file output stream is an output stream for writing data to a File or to a FileDescriptor.
Whether or not a file is available or may be created depends upon the underlying platform.
Some platforms, in particular, allow a file to be opened for writing by only one FileOutputStream (or other file-writing object) at a time.
In such situations the constructors in this class will fail if the file involved is already open.
Steht drinnen, dass das File geöffnet wird und es liegt am System, ob es erstellt wird oder nicht.
et voilà
Da steht das ein paar Betriebssysteme es erlauben, dass mehrere FileOutputStreams auf eine File zugreifen können. Sollte das System es nicht erlauben, wird der zweite FileOutputStream eine Exception werfen.