用Java加载资源的首选方式
我想知道用Java加载资源的最佳方法:
- this.getClass().getResource() (or getResourceAsStream()),
- Thread.currentThread().getContextClassLoader().getResource(name),
- System.class.getResource(name)。
回答:
根据你的需要制定解决方案…
从被调用的类中getResource/ getResourceAsStream()
将获得两件事…
- he class loader
- The starting location
所以如果你这样做
this.getClass().getResource("foo.txt");
它将尝试从与“ this”类相同的包中以及“ this”类的类加载器中加载foo.txt。如果在前面加上“ /”,则绝对是在引用资源。
this.getClass().getResource("/x/y/z/foo.txt")
将从“ this”的类加载器和xyz包中加载资源(它必须与该包中的类位于同一目录中)。
Thread.currentThread().getContextClassLoader().getResource(name)
将使用上下文类加载器加载,但不会根据任何包解析名称(必须绝对引用)
System.class.getResource(name)
将使用系统类加载器加载资源(也必须绝对引用该资源,因为你将无法在java.lang包(System的包)中放入任何内容。
只需查看源代码即可。还指示getResourceAsStream只是在从getResource返回的URL上调用“ openStream”并将其返回。
以上是 用Java加载资源的首选方式 的全部内容, 来源链接: utcz.com/qa/399897.html