WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   java - erzeugen einer .txt-datei, in die geschrieben werden soll (http://www.wcm.at/forum/showthread.php?t=80824)

RaistlinMajere 17.12.2002 03:12

java - erzeugen einer .txt-datei, in die geschrieben werden soll
 
grüzi mitanand!

folgende problemstellung:

ich möchte in ein bestehendes .txt file mit einem namen meiner wahl über java gewisse daten zeilenweise abspeichern. wie das geht, ist mir schon klar, problematisch ist nur, daß ich nicht weiß, wie ich es handlen soll, wenn die datei, in die ich schreiben möchte, nicht existiert.

da es für den anwender des programms unzumutbar ist, dafür zu sorgen, daß immer eine .txt-datei richtigen namens und komplett leer am richtigen pfad vorhanden ist (bekanntlich gehen realistische programmierer davon aus, daß irgendwann auch ein DAU mit ihrem programm zurechtkommen muß) und es auch praktisch wäre, wenn ich die einzelnen abspeichervorgänge in dateien unterschiedlichen namens vornehmen könnte, müßte ich nun also wissen, wie man in java eine leere .txt-datei gewünschten namens erstellt, in die ich danach meine daten abspeichern kann.

danke im voraus für hoffentlich hilfreiche tipps.

creibl 17.12.2002 09:46

So weit ich weiß, legt Java die Detei beim Aufruf an.

Sprich die Datei muss nicht vorhanden sein. Wenn sie trotzdem vorhanden ist, wird sie überschrieben.

Mit

public static void main(String[] args)
{
....
String filename;
......
......
filename = "C:\\Verzeichnis\\Dateiname.txt";
w = new FileWriter(filename);

funktionierts zumindest bei mir.

Um in unterschiedlichen Dateinamen abspeichern zu können, würde ich es so machen: Einfach an den Dateinamen das Datum und die Uhrzeit anfügen lassen.

Hoffe, ich konnte dir helfen.

mfg

Tarjan 17.12.2002 10:50

Der FileWriter ist schon ok zum Zeilenweise schreiben. Für das File selbst würde ich allerdings ein java.io.File Object verwenden. Da hast du sehr viele Möglichkeiten zur Filemanipulation wie Überprüfen ob es exisitiert, anlegen, löschen, Directorys erstellen etc.

Willst du Dich frei im File bewegen (also einmal vorne lesen, dan hinten schreiben, dann wieder vorne schreiben ezc.) dann verwende das RandomAccessFile, da muss allderings ein entsprechendes File im Filesytem vorhanden sein.

RaistlinMajere 18.12.2002 19:42

Zitat:

Original geschrieben von creibl
So weit ich weiß, legt Java die Detei beim Aufruf an.

Sprich die Datei muss nicht vorhanden sein. Wenn sie trotzdem vorhanden ist, wird sie überschrieben.

Mit

public static void main(String[] args)
{
....
String filename;
......
......
filename = "C:\\Verzeichnis\\Dateiname.txt";
w = new FileWriter(filename);

funktionierts zumindest bei mir.

Um in unterschiedlichen Dateinamen abspeichern zu können, würde ich es so machen: Einfach an den Dateinamen das Datum und die Uhrzeit anfügen lassen.

Hoffe, ich konnte dir helfen.

mfg

stimmt, funzt gut, nur ein problem gibts noch. ich möchte die datei im homedirectory (d.h. dort, wo sich auch die .java-dateien befinden), abspeichern, der pfad dorthin kann aber natürlich unterschiedlich sein.

dummerweise wird mir jedoch, wenn ich als savepath einfach ".\\dateiname.txt" angebe, die datei immer in den installationsordner des onestudios\bin abgespeichert, als ob das das homedirectory wäre, was es aber nicht ist!
ich habe auch schon probiert, den absoluten pfad des .java-files auszulesen, um ihn als pfadangabe fürs abspeichern dex .txt-files zu verwenden, aber auch da wird mir das bin-verzeichnis angegeben, was aber nicht korrekt ist, weil die java-files woanders liegen.

Tarjan 18.12.2002 22:40

Filenamen ohne Pfandangabe angeben, dann wird das File im Arbeitsverzeichnis (sprich, von wo du die main-Klasse aufrufst) angelegt.

RaistlinMajere 19.12.2002 02:50

Zitat:

Original geschrieben von Tarjan
Filenamen ohne Pfandangabe angeben, dann wird das File im Arbeitsverzeichnis (sprich, von wo du die main-Klasse aufrufst) angelegt.
das war auch das 1., was ich probiert habe und laut go2java sollte es ja auch funzen, nur tuts das leider nicht. :(
wie gesagt, wenn ich mir den absoluten pfad zu meinen .java-dateien, also dorthin, wo eigentlich das arbeitsverzeichnis sein sollte, ausgeben lasse, bekomme ich wieder diesen onestudio\bin-ordner.

RaistlinMajere 19.12.2002 23:18

nachtrag @ tarjan
 
ich habe heute meine java-files auf einem anderen system mit dem jdk.1.3 und forte ausprobiert, dort werden die textdateien direkt im installations-homedirectory von forte abgespeichert, also nicht wie bei mir (jdk1.4 und onestudio=nachfolger von forte) noch im unterverzeichnis "\bin".

trotzdem wird in beiden fällen nicht das tatsächliche arbeitsverzeichnis zum abspeichern hergenommen.

würde mich interessieren, wo die abgelegt werden, wenn die java-files nicht über forte/onestudio verarbeitet werden, sondern z.b. über die kommandozeile.

Who-T 20.12.2002 00:06

wenn ich mich nicht irre liegt das daran, dass die IDEs die java-apps immer aus einem bestimmten directory ausführen.
bei jbuilder zb ist dies der projektordner selber, die eigentlichen klassen liegen woanders.

im normalfall kannst jedoch davon ausgehen, dass das aktuelle verzeichnis das ist, aus dem du java aufgerufen hast

am einfachsten jedoch über die konsole nachzuprüfen


steht da jetzt überhaupt was sinnvolles drin? ich sollt nicht mehr posten, zu wenig geschlafen

Tarjan 20.12.2002 08:23

Den Grund hat Who-T schon erwähnt. Die Files liegen in diesen Verzeichnissen, da die IDE´s die Java Programme in diesen Verzeichnissen ausführen. Rufst du die Programme von der Komandozeile auf, so werden die Dateien auch direkt in den jeweiligen Ordner erzeugt.

Alternativ schaue mal, ob du nicht das Verzeichnis in der IDE ändern kannst.

Und die 3. Möglichkeit ist die, dass Du getrennt ein Resourcenverzeichnis anlegst und den Pfad dahin absolut angibst.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag