Input/Output Pfad richtig ermitteln

Dave

Aktives Mitglied
Guten Tag,

ich Programmiere ein kleines Programm welches eine Access-Datei beim Start aus dem Jar-Archiv in den Userordner kopiert (soweit diese nicht bereits vorhanden ist).
Nun unter Eclipse funktioniert es wunderbar, nur wenn ich es als eine jar. auf dem Desktop starte, findet er den Pfad nicht.
Habe schon viele Lösungen versucht (ClassLoader.getSystemRessource(), getClass.getRessource(), MEINEKLASSE.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())
jedoch kriege ich es nicht hin -.-°

Kann mir möglicherweise jemand sagen wie ich den Pfad von der .mdb auslesen kann?

Meine Methoden sehen so aus
Java:
private void createProgramDirectory() {
		// TODO Auto-generated method stub
		File file = new File(System.getProperty("user.home")
				+ "\\w4n");
		// prüft ob das verzeichniss vorhanden ist
		if (file.isDirectory()) {
			// verzeichniss ist vorhanden
			// output dateien bestimmen
			File output = new File(System.getProperty("user.home")
					+ "\\w4n\\w4n.mdb");
			// ist die output datei bereitsvorhanden
//			System.out.println("output.length(): " + output.length());
			if (!output.exists() || output.length() < 490000) {
				// wenn nicht erstelle diese
				this.copyFile();
			}
		} else {
			// wenn verzeichniss nicht vorhanden, erstelle es
			file.mkdir();
			// kopiere die datei
			this.copyFile();
		}
	}

Java:
public void copyFile() {
		File input = new File(System.getProperty("user.dir")
				+ ("\\src\\database\\w4n.mdb"));
		System.out.println(System.getProperty("user.dir")
				+ ("\\src\\database\\w4n.mdb"));
		File output = new File(System.getProperty("user.home")
				+ "\\w4n\\w4n.mdb");
		FileChannel inChannel = null;
		FileChannel outChannel = null;
		try {
			inChannel = new FileInputStream(input).getChannel();
			outChannel = new FileOutputStream(output).getChannel();
			inChannel.transferTo(0, inChannel.size(), outChannel);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (inChannel != null)
				try {
					inChannel.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			if (outChannel != null)
				try {
					outChannel.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}

Danke ;)
 
Zuletzt bearbeitet:

shadow123

Mitglied
Hi,

so wie ich dich verstehe willst du eine bestehende Ressource aus deinem jar in ein Verzeichnis exportieren. Da gibt es zwei Möglichkeiten:
1. Du öffnest deine jar-Datei als ZIP-Archiv und extrahierst die DB.
2. Du verwendest die von Java gestellte Methode getResourceAsStream("...").
Java:
InputStream is = this.getClass().getClassLoader()    .getResourceAsStream("yourpackage/mypackage/myfile.xml");

Das es unter eclipse funktioniert liegt wohl daran, dass sich zur Entwicklungszeit die Dateien noch nicht in der jar-Datei befinden.
 

Dave

Aktives Mitglied
Hi,

so wie ich dich verstehe willst du eine bestehende Ressource aus deinem jar in ein Verzeichnis exportieren. Da gibt es zwei Möglichkeiten:
1. Du öffnest deine jar-Datei als ZIP-Archiv und extrahierst die DB.
2. Du verwendest die von Java gestellte Methode getResourceAsStream("...").
Java:
InputStream is = this.getClass().getClassLoader()    .getResourceAsStream("yourpackage/mypackage/myfile.xml");

Das es unter eclipse funktioniert liegt wohl daran, dass sich zur Entwicklungszeit die Dateien noch nicht in der jar-Datei befinden.

Ok, wie kann ich dann anschliessend den InputStream in ein FileChannel o. FileInputStream wandeln ?
also so dass es zu meiner Copymethode passt.

Sry dass ich mich so dumm anstelle, programmiere Java selten, meistens COBOL
 
Zuletzt bearbeitet:

shadow123

Mitglied
Hmm, wo habt ihr bloß alle diesen Dateiumgang her mit den Channels. Also zu meiner Zeit gab es sowas gar nicht :D

Nö, mach es doch auf dem normalen Wege. Lese mit dem InputStream die Daten ein und schreibe diese dann mit einem FileOutputStream auf die Platte. Hier mal ein Beispiel Java Copy File Example, Copy File in Java
Das geht ganz leicht und wurde zumindest bis es noch kein NIO gab für viele binäre Dateioperationen so verwendet.

Notiz an mich: Lies dich mal in Java 6 und 7 ein bei Gelegenheit :rtfm: also wohl so gegen ende 2014 :lol:
 

Dave

Aktives Mitglied
Funktioniert nicht so ganz.

Java:
		File output = new File(System.getProperty("user.home")
				+ "\\w4n\\w4n.mdb");
		try {
			InputStream inputStream = this.getClass().getResourceAsStream("database/w4n.mdb");
			System.out.println(this.getClass().getResourceAsStream("database/w4n.mdb"));
			OutputStream outputStream = new FileOutputStream(output);
			byte[] buf = new byte[1024];
			int len;
			while((len = inputStream.read(buf)) > 0) {
				outputStream.write(buf, 0, len);
			}
			inputStream.close();
			outputStream.close();
			System.out.println("datei kopiert");
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Code:
Exception in thread "Thread-6" java.lang.NullPointerException
	at database.Verbindung.copyFile(Verbindung.java:127)

Zeiel 127 = while((len = inputStream.read(buf)) > 0) {
 
Zuletzt bearbeitet:

shadow123

Mitglied
Wurde denn inputStream auch initialisiert?
Schau mal, welchen Wert die Variable nach getResourceAsStream(...). Wenn die null ist, dann stimmt noch dein Pfad nicht. Tipp: Java unterscheidet bei Dateinamem zwischen Groß- und Kleinschreibung ;)
 

Dave

Aktives Mitglied
Wurde denn inputStream auch initialisiert?
Schau mal, welchen Wert die Variable nach getResourceAsStream(...). Wenn die null ist, dann stimmt noch dein Pfad nicht. Tipp: Java unterscheidet bei Dateinamem zwischen Groß- und Kleinschreibung ;)

Die Variable gibt null aus ;)

Das ist grade mein Problem, ich schaffe es nicht den Pfad richtig zu ermittelm ;)
ist alles klein geschrieben ;)
Die ORdnerstruktur sieht so aus:

- w4n.jar
- database​
- w4n.mdb​
 

shadow123

Mitglied
Hi,

versuch es mal mit
this.getClass().getResourceAsStream("/database/w4n.mdb")

Wenn das nicht geht bin ich mit meinem Latain am Ende. Ich versuch dann heute Abend dein Problem nachzustellen, sollte diese Pfadangabe auch nicht gehen...
 
S

Spacerat

Gast
Eclipse und Ressourcen...
Also zunächst muss dass Verzeichnis samt Datei ("database/w4n.db") in Eclipse mit in den Quellordner ("src") des Projektes - sofern ein solcher verwendet wird - kopiert bzw. verschoben werden. In Eclipse genügt es aber nicht ihn blos dorthin zu kopieren, er muss auch noch per include zum "Buildpath" hinzugefügt werden. Fortan kann man die Datei per "getRessourceAsStream()" laden, während der Zugriff über das Dateisystem (per "user.dir") nicht mehr funktioniert.
 

shadow123

Mitglied
:lol:
Manchmal sieht man den Wald vor lauter Bäumen nicht ...

Der Slash am Anfang sagt einfach nur aus, dass er vom Wurzelverzeichnis deines jar-Archivs aus gehen soll. Wir haben die ganze Zeit im falschen Verzeichnis rumgestochert :bloed:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Helgon Pfad richtig angeben Java Basics - Anfänger-Themen 7
S Pfad für Datei falsch - wie richtig angeben? Java Basics - Anfänger-Themen 7
W Dotenv relativer vs absoluter Pfad Java Basics - Anfänger-Themen 2
J Pfad zerlegen Java Basics - Anfänger-Themen 2
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
P Möglichen Pfad überprüfen Java Basics - Anfänger-Themen 5
M Java GUI explorer aufrufen um Pfad zu bekommen Java Basics - Anfänger-Themen 3
R FXMLLoader Pfad falsch`? Java Basics - Anfänger-Themen 4
S Alternativer Pfad Java Basics - Anfänger-Themen 5
R speicherort Mac pfad angeben Java Basics - Anfänger-Themen 3
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
O Best Practice Datei-Pfad zerlegen Java Basics - Anfänger-Themen 4
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
H pfad finden Java Basics - Anfänger-Themen 12
H Pfad Program Files\Common Files\Oracle\Java\javapath Java Basics - Anfänger-Themen 3
L Pfad zum Jar Java Basics - Anfänger-Themen 7
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
B Log4J Pfad des Logfiles definieren Java Basics - Anfänger-Themen 6
D Umgebungsvariable Pfad javaw.exe für Programmstart auf Windows Java Basics - Anfänger-Themen 1
D Pfad Java Basics - Anfänger-Themen 15
H nio Pfad aus Dateinamen extrahieren Java Basics - Anfänger-Themen 4
R Pfad angeben Java Basics - Anfänger-Themen 7
S Pfad für Dateisystem?? Java Basics - Anfänger-Themen 13
P JSON-Konfigurationsdatei verwenden: Probleme mit Pfad Java Basics - Anfänger-Themen 1
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
M Pfad zu einer Datei in einer exportierten Jar-Datei Java Basics - Anfänger-Themen 5
S ungültiger Pfad bei der Installation von API documentation Java Basics - Anfänger-Themen 0
N .propertiesdatei über Relativen Pfad einlesen lassen Java Basics - Anfänger-Themen 5
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Bei Umlauten und Leerzeichen im Pfad, wird Datei nicht gefunden Java Basics - Anfänger-Themen 5
O JFileChooser Verhalten -Pfad Java Basics - Anfänger-Themen 15
V java Pfad javac Java Basics - Anfänger-Themen 8
D Ein Icon ohne Pfad sondern mit Package. Java Basics - Anfänger-Themen 4
P Leerzeichen in Pfad... Java Basics - Anfänger-Themen 17
P Datei auf Pfad speichern Java Basics - Anfänger-Themen 7
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
H Programm zur Ausgabe von Datei und Pfad Java Basics - Anfänger-Themen 7
C Pfad für Bilder angeben Java Basics - Anfänger-Themen 11
L Pfad "zuschneiden" Java Basics - Anfänger-Themen 3
B In welchem (Default) Pfad erstellt Java Dateien? Java Basics - Anfänger-Themen 4
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
J Input/Output Datei auslesen, Pfad eingeben Java Basics - Anfänger-Themen 4
S PATH und Pfad auslesen.... Java Basics - Anfänger-Themen 3
X JDK installieren Pfad wird nicht gefunden Java Basics - Anfänger-Themen 5
B Classpath cmd java mit absolutem Pfad Java Basics - Anfänger-Themen 15
B eingene Klasse in eigenem Prozess starten mit relativem Pfad Java Basics - Anfänger-Themen 5
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
F Zugriff auf Pfad des gerade ausgeführten Programms? Java Basics - Anfänger-Themen 14
S Pfad auslesen Java Basics - Anfänger-Themen 3
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
M Existiert der gegebene Pfad? Java Basics - Anfänger-Themen 5
G aktueller Pfad Java Basics - Anfänger-Themen 4
F Relativer Pfad auf Datei im Projektordner Java Basics - Anfänger-Themen 11
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
T Pfad für Datei neben Jar Java Basics - Anfänger-Themen 9
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
I Java-Programmm starten/ Pfad hsql DB Java Basics - Anfänger-Themen 7
T Pfad gültig oder ungültig? Java Basics - Anfänger-Themen 17
T brauche den pfad Name! Java Basics - Anfänger-Themen 2
Z css pfad falsch Java Basics - Anfänger-Themen 7
P ImageIcon/Pfad Java Basics - Anfänger-Themen 3
M externen Pfad in Jar verwenden Java Basics - Anfänger-Themen 3
V pfad.exists() gilt nicht für "//server/a/xyz.jpg"? Java Basics - Anfänger-Themen 12
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
C exec Aufruf mit Leerzeilen im Pfad Java Basics - Anfänger-Themen 3
J Pfad bzw. Namen einer Datei auslesen Java Basics - Anfänger-Themen 6
D Pfad zu "Eigenen Dateien" ermitteln Java Basics - Anfänger-Themen 8
A Relativer Pfad zu einem File ermitteln Java Basics - Anfänger-Themen 2
M createImage ungültiger Pfad registrieren Java Basics - Anfänger-Themen 2
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
A Aktueller Pfad des Programms (.jar) ermitteln Java Basics - Anfänger-Themen 10
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
L relativer Pfad Java Basics - Anfänger-Themen 2
S In Eclipse relativen Pfad fuer Tomcat Server erstellen..? Java Basics - Anfänger-Themen 3
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
megachucky FileInputStream findet nur absoluten Pfad, keinen Relativen ?! Java Basics - Anfänger-Themen 7
M Pfad angabe bei getRescource und ImageIO.write Java Basics - Anfänger-Themen 4
E new File macht den Pfad kaputt Java Basics - Anfänger-Themen 15
0 Den Pfad für das Bild angeben Java Basics - Anfänger-Themen 9
D Pfad zum Konfigurationsfile von Servletanwendung "dynamisieren" Java Basics - Anfänger-Themen 27
H Wie mache ich aus pfad\\unterpfad pfad\unterpfad? Java Basics - Anfänger-Themen 3
L datei speichern untervorgegebenen pfad Java Basics - Anfänger-Themen 3
A relativer Pfad Java Basics - Anfänger-Themen 6
R Properties über statischen Pfad laden Java Basics - Anfänger-Themen 2
L Pfad von Webprojekt auslesen Java Basics - Anfänger-Themen 10
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R Pfad relativ eingeben Java Basics - Anfänger-Themen 20
Z Pfad zum Jararchiv Java Basics - Anfänger-Themen 4
S Object Pfad Java Basics - Anfänger-Themen 3
S log4j pfad per umgebungsvariable setzen? Java Basics - Anfänger-Themen 2
G Mit jFileChooser Pfad rauskriegen? Java Basics - Anfänger-Themen 3
G Pfad einer Klasse Java Basics - Anfänger-Themen 6
D Relativer Pfad innerhalb jar Datei Java Basics - Anfänger-Themen 5
C Problem mit einem Pfad Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben