Filesystem begrenzen

Status
Nicht offen für weitere Antworten.
H

Hjolldar

Gast
Hallo,

wenn man in Java eine Instanz von java.io.File erzeugt, und KEINEN relativen Pfad angibt, landet die daraus entstehende Datei in dem Verzeichnis, in dem man die Java Anwendung gestartet hat.
Nun will ich aber ein Verhalten definieren, bei dem die Datei dann NICHT in diesem Verzeichnis landet, sondern in einem was die Anwendung selbst definiert hat.

Das ändern der System variable user.dir funktioniert nicht (da ist seit 7 Jahren ein Bug von Sun drin, der das verhindert)
Hat irgend jemand eine Ahnung, wie man das am besten realisieren kann?

Gruß,
M.
 

0xdeadbeef

Top Contributor
Also, das aktuelle Verzeichnis kann man in Java nicht setzen. Ob Bug oder Feature, sei mal dahingestellt ;)

Mir ist nicht so ganz klar, wo Dein Problem ist: wenn die Anwendung ein File von einem absoluten Pfad laden will, kann sie das doch und auch ein relativer Pfad zum Startpfad ist möglich.

Falls Deine Frage lautet, wie man herausfindet, in welchem Pfad eine ausgeführte Klasse liegt, gibt es dazu eine Möglichkeit über den Klassenlader:

Code:
URL startURL = getClass().getResource("Main.class");
System.out.println(startURL);

Im Beispiel sei Main.class der Name der ausgeführten Klasse.

Hilft Dir das?
 
G

Gast

Gast
Okay, ich beschreib mal das Problem genauer ;)

Ich schreibe ein Test-tool, welches in einer Art Sandbox eine Client anwendung starten und überwachen soll.
Wenn das Test-Tool startet, zeigt das "user.dir" auf das Verzeichnis des Test Tools.
Dann startet das Test tool die Client application.

Als Client Anwendung kommt jede Java Anwendung in betracht. Wenn nun diese Client Anwendung eine Datei öffnet (mit z.B. "new File("beispiel.txt);" funktioniert das nicht mehr, wenn das Test Tool diese Anwendung gestartet hat, da nun das File (und auch evtl. Configurationsfiles im Verzeichnis der Client Anwendung liegen.

Prinzipiell gibt es kein Problem damit, Verzeichnisse direkt anzugeben, allerdings kann ich von keiner Client Anwendung verlangen, dass sie ihren Code umschreiben, nur dass das Test tool laeuft.

Deshalb suche ich nach einer Möglichkeit, für die Client Anwendung eine Sandbox aufzubauen, die sich genau so verhaelt, als waere die Anwendung direkt und nicht ueber Unwege gestartet.
 
R

Roar

Gast
dochdoch, das soltle über die system proeprty gehen. versuch mal so:
System.setProperty("user.dir", "C:\\Blupp");
aber das ist nicht zu empfehlen, da andere Benutzer auch ander verzeichnisse und so haben.
das aktuelle verzeichnis ist imemr das aus dem java.exe aufgerufen wurde.
 
G

Gast

Gast
Naja, das mit dem "user.dir" hab ich schon versucht. Genau da liegt der Bug von Sun. Erstellt man auf diese Art ein File (new File("hallo.txt"); und lässt sich den absoluten Pfad anzeigen, besagt dieser auch, dass das File in C:\\Blupp liegen würde. Aber wenn man es dann tatsächlich erstellt, greift das System doch wieder auf das "alte" user.dir zu.
Das ist der Bug, der in sun's Bugparade unter den ersten 25 auf Platz 25 liegt.
 
R

Roar

Gast
hm dat is wohl scheiße
dann erstell dir deine datei so: new File(System.getProperty("user.dir") + "hallo.txt");
vielleicht gehts so?
 
G

Guest

Gast
Hallo zusammen,

WEiss zwar nicht, ob ich deine Frage recht verstanden habe. Ich hatte folgendes Problem:
java wurde aus dem Verzeichnis blabla\bin gestartet, aber ich wollte eine Datei aus dem
Verzeichnis blabla\logs auslesen.

Ich habe nun mit System.getProperty("user.dir") den absoluten Pfad des startverzeichnisses
herausgefunden und hab mir dann mit substrings und anhängen den gewünschten Pfad zusammen
gebastelt. Ist zwar Murks aber es funktioniert :D

Code:
String filename = "xml-tng.log";
String dir = "logs";
String path =System.getProperty("user.dir");
int index = path.indexOf("bin");
String parent = path.substring(0,index);
path = parent+"\\"+dir+"\\";
// ...
File logfile = new File(path+filename);

Hoffe es hilft!

Gruss bongj
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Filesystem Java Basics - Anfänger-Themen 3
A POI Einlesen Excel Workbook aus BLOB oder von URL anstatt aus Filesystem ? Java Basics - Anfänger-Themen 3
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G Filesystem in JTree anzeigen Java Basics - Anfänger-Themen 4
N Instanzen von beliebigen Klassen aus dem Filesystem erzeugen Java Basics - Anfänger-Themen 7
G Datei im Filesystem löschen Java Basics - Anfänger-Themen 8
nils812 Black Jack Karten Anzahl begrenzen Java Basics - Anfänger-Themen 5
S Wie kann ich den Bereich eines Integers begrenzen? Java Basics - Anfänger-Themen 2
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
M BufferedReader begrenzen Java Basics - Anfänger-Themen 3
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
D Anzahl von Zahlen bei eingabe begrenzen Java Basics - Anfänger-Themen 37
D Größe der Zahlenkombinationen eines Arrays begrenzen Java Basics - Anfänger-Themen 0
E Eingabemöglichkeiten für Textfeld begrenzen Java Basics - Anfänger-Themen 6
S Langtext auf bestimmten Bereich begrenzen Java Basics - Anfänger-Themen 3
T Ausführung zeitlich begrenzen? Java Basics - Anfänger-Themen 2
V Nachkommastellen begrenzen (1,xxx) Java Basics - Anfänger-Themen 3
-horn- Java Speicherbedarf begrenzen? (Nicht Jar) Java Basics - Anfänger-Themen 3
isowiz Threads sammeln und max. Anzahl begrenzen Java Basics - Anfänger-Themen 2
W JFileChooser - Eingebbare Zeichen begrenzen Java Basics - Anfänger-Themen 3
B Wie Dateitypauswahl in JFileChooser Opendialog begrenzen? Java Basics - Anfänger-Themen 2
R Zahlen bei printf auf 2 Nachkommestellen begrenzen Java Basics - Anfänger-Themen 10
G JTextField Eingabe begrenzen? Java Basics - Anfänger-Themen 3
G String-Zeichenanzahl begrenzen Java Basics - Anfänger-Themen 13
M Double: Nachkommastellen begrenzen Java Basics - Anfänger-Themen 8
B Name und PLZ begrenzen Java Basics - Anfänger-Themen 3
R JDesktopPane Anzeigebereich begrenzen Java Basics - Anfänger-Themen 3
cowabunga1984 Größe einer Logdatei begrenzen Java Basics - Anfänger-Themen 9
M Zeilenausgabe auf ein paar Zeichen begrenzen Java Basics - Anfänger-Themen 2
F JTextField: Textlänge begrenzen Java Basics - Anfänger-Themen 8
G Gleitkommaoperationen - Nachkommastellen begrenzen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben