# Auf Dateiverzeichnis extern zugreifen (evtl über XML??)



## kakulala (31. Jul 2017)

Hallo Leute,
ich habe eine "wie sollte ich das am besten in java umsetzen"-Frage. Ich habe ein Programm in  Java geschrieben, dass eine csv-Datei einliest, die auf einem festen Verzeichnis gespeichert wird. (BufferedReader & FileReader) Die Datei wird anschließend ausgelesen & die Daten mithilfe von jFreeChart in einem XYDataset (XY-Graphen) angezeigt.

Frage: Das Programm soll nun jedoch ohne Entwicklungsoberfläche laufen, d. h. ich exportiere es als .exe. Da das Verzeichnis jetzt jedoch "unabhängig" sein soll, d.h. jederzeit änderbar, soll ich nun das Verzeichnis extern speichern bzw. gespeichert werden & es soll somit ohne dass ich in den Code gehen muss geändert werden können. Außerdem sollen auch die Daten aus dem Verzeichnis unabhängig vom Code aufgerufen werden. D.h. dort stehen unterschiedliche .csv-Dateien drinnen & man soll nach Namen & aktuellstem Datum sortieren können. D.h. es sollen immer die aktuellste .csv-Datei mit der "1" im Namen geöffnet werden und ein andermal die aktuellste .csv-Datei mit der "2" im Namen. Meine Frage lautet nun : Wie soll ich das am besten umsetzen?
Meine erste Idee wäre eine XML-Datei auf die mein Java-Programm zugreift, jedoch weiß ich nicht genau wie ich dort den Dateipfad speichern sollte....
vielleicht so: ?   file:///H:/Test/Testfile.csv

Hat schonmal jemand ein Verzeichnis "ausgelagert" & dann darauf zugegriffen oder andere Ideen, wie ich es umsetzen könnte??
Würde mich sehr über Hilfe freuen!


----------



## stg (31. Jul 2017)

Speicher den Pfad doch einfach in einer stinknormalen Text-Datei.


----------



## kakulala (31. Jul 2017)

Wäre eine möglichkeit, dort kann ich dann aber nicht die Abfrage nach Datum & Name/Nummer auslagern.


----------



## Flown (31. Jul 2017)

Konfigurationsfile wie @stg beschrieben hat mit dem Pfad zum Directory. Wenn du das Verzeichnis hast, kannst du das dann durchsuchen und kannst nach Filenamen sortieren und auch vom jeweiligen File das lastModifiedTime erhalten.


----------



## kakulala (31. Jul 2017)

Würde funktionieren, aber dann brauche ich 4 verschiedene Versionen der .exe. Denn das Verzeichnis würde ich gerne außerhalb des Codes durchsuchen, jede .exe soll nämlich jeweils nach einer Nummer sortieren & diese dann auslesen. In java-code funktioniert das ja ganz easy, aber kann man die Abfragen nicht auch auslagern? Deshalb ja die Frage ob das in xml möglich ist oder mit einem anderen Format?


----------



## mrBrown (31. Jul 2017)

Du kannst die Abfragen in deinem JavaCode variabel machen, und dann über die Config-Datei steuern


----------



## Flown (31. Jul 2017)

Wie du das auslagerst ist egal, ob JSON, XML, Properties, txt, csv......... (du siehst es gibt zig Möglichkeiten wie gespeichert wird)
Das wichtigste ist das du alle Informationen auslagerst, die du benötigst!


----------



## kakulala (31. Jul 2017)

mmhh, da das Programm später von Leuten angewendet wird die keinerlei erfahrung mit Java oder Progammiersprachen haben, erscheint mir dennoch xml am einfachsten. Speichert man denn den Dateipfad so: file:///H:/Test/Testfile.csv in der xml-Datei?


----------



## mrBrown (31. Jul 2017)

Das file:/// kannst du weglassen, und statt XML tuts auch eine einfache txt


----------



## kakulala (31. Jul 2017)

mrBrown hat gesagt.:


> Das file:/// kannst du weglassen, und statt XML tuts auch eine einfache txt



Den Dateipfad so zu speichern ist logisch, aber wie soll ich denn in eine txt-Datei Abfragen speichern?


----------



## mrBrown (31. Jul 2017)

Genauso, wie du Abfragen in XML speichern willst?


----------



## kakulala (31. Jul 2017)

mrBrown hat gesagt.:


> Genauso, wie du Abfragen in XML speichern willst?



In XML hätte ich die Abfragen mit true und false gelöst, wenigstens ob es eine csv-Datei ist. Den Rest hätte ich ja so reinschreiben können...also dass er nur die Nummern 1 ausführt & in einem anderen XML würde dann nur Nummer 2 ausgeführt werden. (oder ist da mein Gedankengang falsch?)


----------



## mrBrown (31. Jul 2017)

Nö, aber für nichts davon muss es XML sein, oder?


----------



## kakulala (31. Jul 2017)

mrBrown hat gesagt.:


> Nö, aber für nichts davon muss es XML sein, oder?


Nein, war nur mein Gedanke da ich denke das damit jeder leicht zurecht kommen sollte. Wie würdest du denn dann die Abfragen lösen? Die kann ich ja nicht in eine .txt schreiben....


----------



## mrBrown (31. Jul 2017)

Ich würd die Abfragen so gestalten, dass man sie über einzelne Parameter steuern kann.
Die Parameter gibt man dann über die Datei (oder Kommandozeile) an


----------



## kakulala (31. Jul 2017)

mrBrown hat gesagt.:


> Ich würd die Abfragen so gestalten, dass man sie über einzelne Parameter steuern kann.
> Die Parameter gibt man dann über die Datei (oder Kommandozeile) an



Klingt ziemlich vernünftig, ich werde das nach der Schule ausprobieren & dann berichten. Danke schonmal


----------



## kakulala (1. Aug 2017)

mrBrown hat gesagt.:


> Ich würd die Abfragen so gestalten, dass man sie über einzelne Parameter steuern kann.
> Die Parameter gibt man dann über die Datei (oder Kommandozeile) an


So, ich habe das ganze gestern abend ausprobiert. Es klappt super mit der Textdatei. Jetzt ist aber das Problem, das ich die auch wo speichern müsste um sie lesen zu können. Wenn ich sie jetzt aber in dem Verzeichnis speichere, auf das ich zugreifen möchte und auf dessen Daten ich zugreifen möchte passiert folgendes: 
Es handelt sich um Netzwerk, das durch ein Passwort geschützt ist & obwohl ich das Passwort eingebe & das Netzwerk verbunden ist (H:/) wird mir der Zugriff verweigert & mein Textdokument kann nicht gefunden werden. Irgendwelche Ideen wie ich das umgehen kann?? Die Textdatei soll ja später in einem Verzeichnis liegen, worauf ich immer zugriff habe & das wäre H:/. & im Javacode kann ich das Verzeichnis ja nicht mehr ändern, wenn ich es als .exe exportiert habe...


----------



## mrBrown (1. Aug 2017)

Warum legst du die txt nicht in das gleiche Verzeichnis wie das Programm?


----------



## kakulala (1. Aug 2017)

mrBrown hat gesagt.:


> Warum legst du die txt nicht in das gleiche Verzeichnis wie das Programm?


Meinst du den workspace? Ich habe das Programm noch nicht fertig, dazu brauchte ich noch eine Möglichkeit, einen Pfad einzulesen (jetzt gelöst mit .txt) .

Funktioniert das denn wenn ich eine .exe zum schluss mache & in dem Ordner befindet sich dann die Textdatei (mit Pfad). Kann ich dann die Textdatei bzw. den Pfad darin beliebig ändern & es funktioniert? Wäre schade, wenn ich das jetzt alles so fertig mache & zum schluss funktioniert es nicht so wie es sollte....


----------



## mrBrown (1. Aug 2017)

Ja, das funktioniert.


----------



## kakulala (1. Aug 2017)

mrBrown hat gesagt.:


> Ja, das funktioniert.


Wenn ich nun jedoch die .exe Datei auf einen anderen PC lege & dort ausführen lassen möchte, wird es problematisch oder? Dann stimmt ja der Pfad nichtmehr, in dem die Textdatei in meinem Java Programm steht


----------



## mrBrown (1. Aug 2017)

Ja deshalb sollte sie ja sich in dem gleichem Verzeichnis wie das Programm liegen.
Du solltest dafür natürlich keinen absoluten sondern einen relativen Pfad nutzen


----------



## kakulala (1. Aug 2017)

mrBrown hat gesagt.:


> Ja deshalb sollte sie ja sich in dem gleichem Verzeichnis wie das Programm liegen.
> Du solltest dafür natürlich keinen absoluten sondern einen relativen Pfad nutzen


Oh gott, danke! Ich bin automatisch von einem absoluten ausgegangen.....ich probiers!


----------

