美文网首页
Resources的资源的读取

Resources的资源的读取

作者: wusj | 来源:发表于2017-07-04 15:10 被阅读0次

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource读取resources文件夹下的文件
    1 示例
    通常工程结构如下:


    工程结构
    package wusj.ResourceFileTest;
    
    public class App
    {
        public static void main( String[] args )
        {
         /*********方法1 通过ClassLoader.getResource()读取********/
              ClassLoader classLoader = App.class.getClassLoader();
              //得到的路径是classpath
              System.out.println(classLoader.getResource("").toString());
              //读取abc.txt
              System.out.println(classLoader.getResource("abc.txt").toString());
              System.out.println();
    
         /********方法2 通过class.getResource()读取*********/
              //得到的路径是classpath
              System.out.println(App.class.getResource("/").toString());
              //得到当前类所在文件夹
              System.out.println(App.class.getResource("").toString());
              //读取classpath下的abc.txt,必须加/,否则会定位到当前类所在文件夹
              System.out.println(App.class.getResource("/abc.txt").toString());
              //读取当前类所在文件夹下的resources/def.txt
              System.out.println(App.class.getResource("resources/def.txt").toString());
        }
    }
    
    运行结果

    2 两者的区别

    • Class.getResource(String path)

    path 不以’/'开头时,默认是从此类所在的包下取资源;
    path 以’/'开头时,则是从classpath根下获取;

    • Class.getClassLoader().getResource(String path)

    path不能以’/'开头时;
    path是从classpath根下获取;

    如果想获取classpath(在这里是指file:/E:/wusj/workspace-per/ResourceFileTest/target/classes/)下的资源,可以使用Class.getResource(String path)或者Class.getClassLoader().getResource(String path);如果是获取位于某个包下的资源,则使用Class.getResource(String path)。

    相关文章

      网友评论

          本文标题:Resources的资源的读取

          本文链接:https://www.haomeiwen.com/subject/afcxhxtx.html