美文网首页
2018-03-31

2018-03-31

作者: 在彼处 | 来源:发表于2018-03-31 20:41 被阅读0次

                    maven下边资源文件读取问题

      这个问题自己纠结了一会,主要是很多问题弄不懂,现在详细介绍一下在idea中如何读取resources文件下边的配置文件,新建一个maven工程后,main目录下会有java和resources两个文件夹,其中java文件夹下存放源代码,resources文件夹下存放一些配置文件等

    classpath实际上就是编译后的 以 classes 文件夹为起点的路径,而在ItelliJ IDEA 中编译后的文件都会存入out/production下。译后,resources文件夹中的文件以及java目录下的文件都会存入同一个目录(out/production)下,也就是说,编译后是不存在java和resources这两个目录的。

    //获取classpath路径 

     System.out.println("classpath路径: "+Demo1.class.getClassLoader().getResource("").getPath());  

    //获取当前类的加载路径

     System.out.println("当前类加载路径: "+Demo1.class.getResource("").getPath()); // 读取文件resources目录中文件的若干种方法 

     // 方法一:从classpath路径出发读取 readTxt(Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath());

     // 方法二:从类加载路径出发,相当于使用绝对路径 readTxt(Demo1.class.getResource("/test/demo1.txt").getPath());

     // 方法三:从类加载路径出发,相当于使用相对路径 readTxt(Demo1.class.getResource("../../../test/demo1.txt").getPath());


    输出结果

    classpath路径: /home/jerry/IdeaProjects/Demo/out/production/demo1/当前类加载路径: /home/jerry/IdeaProjects/Demo/out/production/demo1/me/shenchao/main/

    1.前者获取的是当前类加载的路径,如果用此方法读取文件则有两种方法,与相对路径绝对路径非常类似,具体参见代码

    2.后者获取的是类加载器的路径,即会到classpath路径下。可以理解当前在 classp/ 目录下,要想访问哪个文件,直接填写路径即可,不用区分相对路径和绝对路径。显然,此方法比较容易写出。推荐。

    demo的结果:


    由此引出的问题:加/不不加/的区别:

    相关文章

      网友评论

          本文标题:2018-03-31

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