Giriş
Açıklaması şöyle.
Yani mutlak yol (absolute path) veya göreceli yol (relative path) kullanılabilir. Mutlak yol olması için yolun "/" ile başlaması gerekir. Her iki kullanım da ClassLoader'a delege edilir. ClassLoader İle Resource Yüklemek yazısına bakabilirsiniz.
getResource metodu
Örnek
path relative ise sınıfın paketinden itibaren arama yapılır.Şu iki kod aynı kapıya çıkar.
Şöyle yaparız
Proje'de src/resources/Dates.xlsx dosyası olsun. Proje jar yapısına çevrildikten sonra öyle yaparız.
Açıklaması şöyle.
This method delegates the call to its class loader, after making these changes to the resource name: if the resource name starts with "/", it is unchanged; otherwise, the package name is prepended to the resource name after converting "." to "/". If this object was loaded by the bootstrap loader, the call is delegated to ClassLoader.getSystemResource.
getResource metodu
Örnek
path relative ise sınıfın paketinden itibaren arama yapılır.Şu iki kod aynı kapıya çıkar.
foo.bar.Baz.class.getResource("xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt");
path absolute ise belirtilen yerdeki kaynak için URL döndürülür. Şu iki kod aynı kapıya çıkar.foo.bar.Baz.class.getResource("/data/xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("data/xyz.txt");
Döndürülen URL null olabilir. Şöyle yaparız.String path = ...;
java.net.URL url = getClass().getResource(path);
if (url != null) {
...
}
Spring ile bu metodun işlevini yapmak daha kolay. Şöyle bir dizin yapısı olsun. src/main/config classpath içinde olsun.--src
--> main
--> config (*)
--> app
--> context
--> reference
--> user
--> user.xml
Şöyle yaparız.Resource r = new ClassPathResource("/app/context/references/user/user.xml");
File file = r.getFile();
ÖrnekŞöyle yaparız
URL url = Object.class.getResource("Object.class");
System.out.println(url);
Java 8 ve altında çıktı olarak şunu alırız.jar:file:/path-to-jre/lib/rt.jar!/java/lang/Object.class
Java 9'da çıktı olarak şunu alırız.jrt:/java.base/java/lang/Object.class
getResourceAsStream metoduProje'de src/resources/Dates.xlsx dosyası olsun. Proje jar yapısına çevrildikten sonra öyle yaparız.
clazz.getResourceAsStream("resources/Dates.xlsx");
Hiç yorum yok:
Yorum Gönder