From: http://blog.csdn.net/explorers/archive/2007/08/02/1722740.aspx
这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行
错误, 才把这个问题澄清了一下。
基本上,两个都可以用于从 classpath 里面进行资源读取, classpath包含classpath中的路径
和classpath中的jar。
两个方法的区别是资源的定义不同, 一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的
资源,用的是绝对路径。
在使用Class.getResourceAsStream 时, 资源路径有两种方式, 一种以 / 开头,则这样的路径是指定绝对
路径, 如果不以 / 开头, 则路径是相对与这个class所在的包的。
在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。
举例,下面的三个语句,实际结果是一样的:
com.explorers.Test.class.getResourceAsStream("abc.jpg")
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
分享到:
相关推荐
`ClassLoader`是Java用来加载类和资源的对象,它能够遍历整个`Classpath`来寻找指定的资源。由于`getClassLoader().getResourceAsStream()`是从类路径的根开始查找,所以也不需要在`fileName`前添加斜杠。 当你的...
InputStream stream = MyClass.class.getResourceAsStream("/config.properties"); ``` 使用`InputStream`,你可以通过`BufferedReader`或`DataInputStream`等类来读取资源的内容。 这两个方法之间的主要区别在于...
例如,com.explorers.Test.class.getResourceAsStream("abc.jpg") 和 com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg") 都可以获取到 abc.jpg 文件的 InputStream 对象。 ClassLoader....
InputStream inputStream = Test.class.getResourceAsStream("abc.jpg"); ``` 3. 使用`ClassLoader.getResourceAsStream`: ```java InputStream inputStream = Test.class.getClassLoader()....
InputStream in = MyClass.class.getResourceAsStream("/config.properties"); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); // 读取内容... ``` 2. 使用`ClassLoader.getResource...
Class<?> currentClass = MyClass.class; // 通过相对路径获取资源 InputStream is = currentClass.getResourceAsStream("/images/myImage.png"); // 或者,如果资源与当前类在同一包下,可以省略开头的 "/" is...
String content = IOUtils.toString(YourClass.class.getResourceAsStream("/resource.txt"), StandardCharsets.UTF_8); ``` 5. **Spring Framework**:在Spring框架中,可以使用`Resource`接口来操作资源,例如...
例如,在某些情况下,我们可能需要使用类名.class.getResourceAsStream()方法来读取.properties文件,而在其他情况下,我们可能需要使用类名.class.getClassLoader().getResourceAsStream()方法。 无论我们选择哪种...
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); ``` ### 6. 使用`java.lang.ClassLoader.getSystemResourceAsStream()` 这是一...
InputStream in = MyClass.class.getClassLoader().getResourceAsStream("config.properties"); if (in != null) { try { props.load(in); } catch (IOException e) { e.printStackTrace(); } } ``` #### 3. ...
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); ``` 6. **使用 `java.lang.ClassLoader` 类的 `getSystemResourceAsStream()...
InputStream is = com.aspose.words.Document.class.getResourceAsStream("/com.aspose.words.lic_2999.xml"); License aposeLic = new License(); aposeLic.setLicense(is); result = true; is.close(); } ...
String filename = name.substring(name.lastIndexOf(".") + 1) + ".class"; // 获取类文件名 InputStream is = getClass().getResourceAsStream(filename); // 获取类文件输入流 if (is == null) { // 如果输入...
InputStream is = com.aspose.words.Document.class .getResourceAsStream("/com.aspose.words.lic_2999.xml"); License asposeLicense = new License(); asposeLicense.setLicense(is); is.close(); } catch ...
InputStream inputStream = ConfigReader.class.getResourceAsStream("/config.properties"); // 使用Properties类读取配置文件 Properties props = new Properties(); try { // 加载流中的数据 props.load...
InputStream is = Demo1.class.getResourceAsStream("/students.xml");// src目录下 // 1. 获得文档解析器工厂对象 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); // 2. ...
刚开始简单破解了一下。 生成PDF都没问题,后来发现生成... InputStream is = XXX.class.getResourceAsStream("/pdflicense.xml"); license.setLicense(is); is.close(); 其中pdflicense.xml已经包含在jar文件里面
当资源文件与`.class`文件位于同一目录下时,可以直接使用类名和资源文件名调用`getResourceAsStream`,例如: ```java me.class.getResourceAsStream("myfile.xml"); ``` 2. **子目录加载** 如果资源位于类的...
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); ``` 这个方法可以处理任何由类加载器加载的资源。 6. **使用java.lang....
InputStream in = ClassLoaderResourceExample.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in); // 示例:获取配置文件中的属性 String dbUrl = p....