{"id":1410,"date":"2012-07-01T18:03:20","date_gmt":"2012-07-01T16:03:20","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1410"},"modified":"2012-07-01T18:03:20","modified_gmt":"2012-07-01T16:03:20","slug":"ressourcen-aus-dem-klassenpfad-und-aus-jar%e2%80%91archiven-laden","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/07\/ressourcen-aus-dem-klassenpfad-und-aus-jar%e2%80%91archiven-laden\/","title":{"rendered":"Ressourcen aus dem Klassenpfad und aus Jar\u2011Archiven laden"},"content":{"rendered":"<p>Um Ressourcen wie Grafiken oder Konfigurationsdateien aus Jar-Archiven zu laden gibt es eine Methoden am Class-Objekt: getResourceAsStream().<\/p>\n<p>&#160;<\/p>\n<p>class java.lang.Class<\/p>\n<p>implements Serializable, GenericDeclaration, Type, AnnotatedElement<\/p>\n<p>&#8211; InputStream getResourceAsStream(String name)   <br \/>Gibt einen Eingabestrom auf die Datei mit dem Namen name zur\u00fcck, oder null, falls es keine Ressource mit dem Namen im Klassepfad gibt.<\/p>\n<p>&#160;<\/p>\n<p>Da der Klassenlader die Ressource findet, entdeckt er alle Dateien, die im Pfad des Klassenladers eingetragen sind. Das gilt auch f\u00fcr Jar-Archive, weil dort vom Klassenlader alles verf\u00fcgbar ist. Die Methode getResourceAsStream() liefert auch null, wenn die Sicherheitsrichtlinien das Lesen verbieten. Da die Methode keine Ausnahme ausl\u00f6st, muss auf jeden Fall getestet werden, ob die R\u00fcckgabe ungleich null war.<\/p>\n<p>Das folgende Programm liest ein Byte ein und gibt es auf dem Bildschirm aus:<\/p>\n<p>&#160;<\/p>\n<p>package com.tutego.insel.io.stream;<\/p>\n<p>import java.io.*;<\/p>\n<p>import java.util.Objects;<\/p>\n<p>public class GetResourceAsStreamDemo {<\/p>\n<p> public static void main( String[] args ) {<\/p>\n<p>&#160; String filename = &quot;onebyte.txt&quot;;<\/p>\n<p>&#160; InputStream is = Objects.requireNonNull(<\/p>\n<p><b>&#160;&#160; GetResourceAsStreamDemo.class.getResourceAsStream( filename )<\/b>,<\/p>\n<p>&#160;&#160;&#160; &quot;Datei gibt es nicht!&quot; );<\/p>\n<p>&#160; try {<\/p>\n<p>&#160;&#160; System.out.println( is.read() ); \/\/ 49<\/p>\n<p>&#160; }<\/p>\n<p>&#160; catch ( IOException e ) {<\/p>\n<p>&#160;&#160; e.printStackTrace();<\/p>\n<p>&#160; }<\/p>\n<p> }<\/p>\n<p>}<\/p>\n<p>Die Datei onebyte.txt befindet sich im gleichen Pfad wie auch die Klasse, liegt also in com\/tutego\/insel\/io\/stream\/onebyte.txt. Liegt sie zum Beispiel im Wurzelverzeichnis des Pakets, muss sie mit &quot;<b>\/<\/b>onebyte.txt&quot; angegeben werden. Liegen die Ressourcen au\u00dferhalb des Klassenpfades, k\u00f6nnen sie nicht gelesen werden. Der gro\u00dfe Vorteil ist aber, dass die Methode alle Ressourcen anzapfen kann, die \u00fcber den Klassenlader zug\u00e4nglich sind, und das ist insbesondere der Fall, wenn die Dateien aus Jar-Archiven kommen \u2013 hier gibt es keinen \u00fcblichen Pfad im Dateisystem, der h\u00f6rt in der Regel beim Jar-Archiv selbst auf.<\/p>\n<p>Zum Nutzen der getResourceAsStream()-Methoden ist ein Class-Objekt n\u00f6tig, was wir in unserem Fall \u00fcber <i>Klassenname<\/i>.class besorgen. Das ist n\u00f6tig, weil die Methode main() statisch ist. Andernfalls kann innerhalb von Objektmethoden auch getClass() eingesetzt werden, eine Methode, die jede Klasse aus der Basisklasse java.lang.Object erbt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um Ressourcen wie Grafiken oder Konfigurationsdateien aus Jar-Archiven zu laden gibt es eine Methoden am Class-Objekt: getResourceAsStream(). &#160; class java.lang.Class implements Serializable, GenericDeclaration, Type, AnnotatedElement &#8211; InputStream getResourceAsStream(String name) Gibt einen Eingabestrom auf die Datei mit dem Namen name zur\u00fcck, oder null, falls es keine Ressource mit dem Namen im Klassepfad gibt. &#160; Da der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-1410","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1410"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1410\/revisions"}],"predecessor-version":[{"id":1411,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1410\/revisions\/1411"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}