# File aus jar lesen



## hdi (14. Apr 2009)

Hey, mein Programm lädt beim Start Settings aus einem File, das beim User auf der Platte liegt. Beim ersten Start existiert dieses File bei ihm natürlich noch nicht. Jetzt wollte ich selber ein default-File in mein jar einbinden. Im Moment liegt es einfach in einem package "userfile" mit Namen default.txt.
Ich kriege es aber nicht hin dieses Default-File zu laden:


```
new File("/userfile/default.txt")
```

geht nicht.

Wie macht man so etwas? Danke


----------



## Noctarius (14. Apr 2009)

```
URL url = getClassloader().getResource("my.simple.package.File");
File file = new File(url.toUri());
```


----------



## hdi (14. Apr 2009)

öh die Methoden getClassLoader gibt es nich?


----------



## hdi (15. Apr 2009)

Ok ich versteh jetzt was du meinst. Aber das funzt nicht, ich krieg ne Null-Pointer Exception:


```
File file = new File(Cfg.USERFILE_PATH);
		if (!file.exists()) {
			URL url = UserfileReader.class.getClassLoader().getResource(
					"userfile.default.txt");
			try {
				file = new File(url.toURI());
			} catch (URISyntaxException e) {
				e.printStackTrace();
			}
		}
```

Tut mir Leid ich kenne mich auf diesem Gebiet null aus, vonwegen Pfadangaben und Classloader etc


----------



## Ein Keks (15. Apr 2009)

hi
also wenn du die datei auslesen willst könntest du das doch auch über die zip/jar-entrys machen also so was in der art:


```
JarFile jarFile = new JarFile( new File("blubb.jar") );
ZipEntry entry = jarFile.getEntry("package\default.txt");
InputStream is = jarFile.getInputStream(entry);
```


----------



## void (15. Apr 2009)

Probier mal als Resource-Namen "/userfile/default.txt"


----------



## musiKk (15. Apr 2009)

hdi hat gesagt.:


> Tut mir Leid ich kenne mich auf diesem Gebiet null aus, vonwegen Pfadangaben und Classloader etc



Dann hättest du den Rat #1 anwenden sollen: API-Dokumentation lesen...



> The name of a resource is a '/'-separated path name that identifies the resource.



Da hätte sich zumindest geklärt, dass man den Pfad nicht durch Punkte trennt. Alles Weitere (z. B. führender Slash ja/nein?) sollte eigentlich durch Probieren gehn.

Das Thema könnte vielleicht auch mal in die FAQ. Taucht ja doch immer wieder mal auf.


----------



## hdi (15. Apr 2009)

Danke es klappt. Dass Pfade eig. Slashes und nicht Punkte verwenden wusste ich eig, aber ich dachte mir wer weiss was so ein ClassLoader erwartet :bahnhof: Naja jetzt geht es, vielen Dank


----------

