Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Wie kann ich den Programmpfad auslesen?
Antwort
 
Themen-Optionen
Alt 09.11.2005, 00:58   Nach oben    #1
VipViper2000
Gast
 
Beiträge: n/a
Standard Wie kann ich den Programmpfad auslesen?

Morgen!

Also ich schreibe derzeit ein Programm zur Verwaltung von Videofilmen. Da ich jetzt schon daran denken muss, dass das ganze später in ein .jar File soll, lade ich Bilder etc. entsprechend.

Für meine Kopier-Methode ( die eine schon existierende Datenbank kopieren soll ) brauche ich nun den den Programmpfad, indem das Programm ausgeführt wird, damit die Datenbank, mit der das Programm arbeiten soll auch im gleichen Verzeichnis liegt.

Klar, man könnte den User vorher auswählen lasse, wohin er die Datei speichern will, aber das ist nicht Sinn der Sache. Es soll halt immer im Stammverzeichnis liegen, indem das .jar Archiv liegt.

Gibts da irgendwelche Bilbiotheken, die ich noch nicht gefunden hab, mit denen man diesen Pfad abfragen kann?

Ich wäre euch sehr dankbar für einen Tip!!

Gruß,
VipViper2000
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 01:03   Nach oben    #2
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 433
Standard

Vielleicht habe ich Dich nicht verstanden, aber
Code:
./Pics
spricht den Ordner Pics im Stammverzeichnis an.
__________________
Denk mal darüber nach...

Lars

ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen.
www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de
Sym ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 10:46   Nach oben    #3
Murray
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

"./Pics" ist ein relativer Pfad, der vom Arbeitsverzeichnis der Anwendung ausgeht. Das muss nicht notwendigerweise das Installationsverzeichnis sein.

Wenn man wirklich wissen will, wo das Jar-File installiert ist, aus dem der gerade laufende Bytecode geladen wurde, kann man über java.lang.Class.getResource( String name) gehen.

Bsp.:
Code:
	public static URL getPath( Class cls) {
	
		String cn = cls.getName();
		
		//--- strip off package part
		int dIdx = cn.lastIndexOf( ".");
		if ( dIdx > -1) {
			cn = cn.substring( dIdx+1, cn.length());
		}
		
		//--- add extension
		cn = cn + ".class";
		
		return cls.getResource( cn);
	}
;

Wenn die Klassen aus einem Jar-File von der lokalen Platte stammen, erhält man eine URL nach dem Muster jar:file://c:/programme/myapp/lib/myjar.jar!/com/xyz/Test.class

Wenn die Klassen nicht ein Jar-File verpackt wurden, sondern direkt geladen werden, sieht die URL so aus:
file://c:/programme/myapp/lib/com/xyz/Test.class

Daraus sollte man auf das Installationsverzeichnis schließen können.
Murray ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 13:49   Nach oben    #4
VipViper2000
Gast
 
Beiträge: n/a
Standard

Moin!

Also jein . Es sieht folgendermaßen aus: ich liefere mein Programmpaket (wahrscheinlich) mit einem jar-File namens CinemeX.jar aus. Der User kopiert dann das Jar-File in seinen Wunschordner, z.B.:

c:\Programme\Cinemax\cinemax.jar

Das Programm wird gestartet und eine "alte" Datenbank wird soll ausgewählt werden, z.B. aus:

d:\Toller Ordner\Noch ein Ordner\usw\datenbank.mdb

Nun will ich diese Datenbank kopieren und die Kopie in das Verzeichnis

c:\Programme\Cinemax\

speichern. Dazu müsste ich halt den derzeitigen Pfad wissen, in dem das jar-File liegt. Ich hab gestern selbst viel zusammenbasteln wollen und auch eine getPath Methode geschrieben, die über den ClassLoader geht . Aber letztendlich hab ich dann das Problem, dass wenn das alles halt nicht im jar File liegt, also so lange ich noch am coden bin, das ganze nicht funktioniert hat.

Aber ich werd eure Tips nochmal berücksichtigen und ich hoffen, dass mit dem kleinen Beispiel oben klar geworden ist, was ich machen will.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 14:22   Nach oben    #5
Murray
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Ich würde für das Verzeichnis zunächst ein System-Property abfragen. Wenn das nicht gesetzt ist, wird das Verzechnis über den ClassLoader ermittelt.

Code:
DataPath = System.getProperty( "com.viper.cinemax.DataPath");
if ( DataPath == null) {
  //--- Pfad ist nicht explizit gesetzt -> Position des Jar-Files verwenden
  DataPath = getJarFileDirectory(); 
}
Jetzt kann man zur Entwicklungszeit mit der "-D"-Option einen bestimmten Wert vorgeben.
Murray ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 20:33   Nach oben    #6
VipViper2000
Gast
 
Beiträge: n/a
Standard

Hi Leute!

DANKE für eure Hilfe - Sym, du hast mir weitergeholfen. So einfach kann es sein, das mit "./" hatte ich ganz vergessen. Ich hab jetzt ein

Code:
"." +File.separator()
drauß gemacht -> Funktioniert bestens aus dem Jar File UND auch auch normal.

Thx,
VipViper2000
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 22:38   Nach oben    #7
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Nur so als kleine Anregung:
Lass den User doch die Datenbank mit einem FileChooser selber wählen (bzw. das Verzeichnis dafür).
Auf die Weise wäre das ganze sehr Komfortabel, weil man auch mehrere Datenbanken verwenden könnte.
Dann könnte User1 seine Videos in seiner Datenbank eintragen und User2 in seiner eigenen.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 02:00   Nach oben    #8
VipViper2000
Gast
 
Beiträge: n/a
Standard

@Sparrow

Es geht dabei nicht um neue Datenbanken - das geht sowieso. Also ich kann beliebig viele Datenbanken anlegen und auch einfach neue Laden.

Mein "Feature" bezog sich darauf, dass ich schon sehr lange mit einem VideoArchivierungs Programm arbeite und eine dementsprechend große Datenbank habe, die ich natürlich nicht neu machen will. Aber da mein Programm Felder hat, die das andere nicht hat und umgekehrt, "konvertiere" ich die Tabelle. Dabei geht der User halt oben in die Menüleiste -> Tools -> Konvertieren und wählt dann per FileChooser die alte Datenbank.

Und genau an dieser Stelle hatte ich nun mein Problem - weil wenn der User hier wählen könnte, wo die Datenbank gespeichert werden soll, gäbe es irgendwann ein heilloses Durcheinander und ich finde auch, dass meine VideoDatenbank auch in dem Verzeichnis liegen sollte - aber das ist vielleicht Geschmackssache .
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrere Zeilen auslesen. Jan Datenbanken 17 27.06.2006 16:49
mit PHP ein Bild auslesen Jann Hendrik PHP-Programmierung 8 09.05.2006 09:12
[PHP] Fremde Webseiten auslesen WarrenFaith Tutorials 3 14.03.2006 15:59
Datenbank auslesen und Daten in JTable überführen Lautsprecher Datenbanken 5 20.10.2005 15:34
Check Constraint auslesen galaxy PHP-Programmierung 1 03.06.2005 17:35


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:31 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44