Maven获取resources的文件路径、读取resources的文件 您所在的位置:网站首页 web项目获取文件路径 Maven获取resources的文件路径、读取resources的文件

Maven获取resources的文件路径、读取resources的文件

2023-10-31 17:18| 来源: 网络整理| 查看: 265

路径问题一切要看编译后的文件路径

比如,源文件路径是:

而编译后的文件路径为:

也就是说,resources文件夹下的文件在编译后,都是为根目录,这种情况下,比如我要读取resources 文件夹下的 my.txt 文件路径,

写法①:

// 编译后,项目根路径,写法1 String url1 = A.class.getClassLoader().getResource("").toString(); // 编译后,项目根路径,写法2 String url2 = A.class.getResource("/").toString(); // 编译后,文件根路径 String url3 = A.class.getResource("").toString();

输出:

file:/D:/IdeaWorkspace/test-null-project/target/classes/ file:/D:/IdeaWorkspace/test-null-project/target/classes/ file:/D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

 

写法②:

// 还有一种getResource 后调用 getFile方法,就没有 [file:],而是以 [/D:xxx] 这样的格式 String url4 = A.class.getClassLoader().getResource("").getFile(); String url5 = A.class.getResource("/").getFile(); String url6 = A.class.getResource("").getFile(); System.out.println(url4); System.out.println(url5); System.out.println(url6);

输出:

/D:/IdeaWorkspace/test-null-project/target/classes/ /D:/IdeaWorkspace/test-null-project/target/classes/ /D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

 

写法③:

String url7 = A.class.getClassLoader().getResource("").getPath(); String url8 = A.class.getResource("/").getPath(); String url9 = A.class.getResource("").getPath(); System.out.println(url7); System.out.println(url8); System.out.println(url9);

输出:

/D:/IdeaWorkspace/test-null-project/target/classes/ /D:/IdeaWorkspace/test-null-project/target/classes/ /D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

 

至此,上面已经有多种获取文件路径的方式,既然拿到路径,就可以读取File 文件,进而读取文件了,如这是my.txt 的内容

则读取文件内容的代码可以如下:

// 获取路径 String filePath = A.class.getClassLoader().getResource("my.txt").getFile(); File my = new File(filePath); InputStreamReader isr = new InputStreamReader(new FileInputStream(my), StandardCharsets.UTF_8); BufferedReader br = new BufferedReader(isr); String lineTxt; while ((lineTxt = br.readLine()) != null) { System.out.println(lineTxt); } br.close();

输出:

 

扩展:

写法②getFile 跟写法③getPath 是有区别的,getResource 方法后返回的是一个 java.net.URL对象,那手动构造一个java.net.URL

URL url = new URL("https://www.baidu.com/img/baidu_jgylogo3.gif?param=1111¶m2=aaaaa"); System.out.println("getFile ==> " + url.getFile()); System.out.println("getPath ==> " + url.getPath());

输出:

getFile == > /img/baidu_jgylogo3.gif?param=1111¶m2=aaaaa getPath ==> /img/baidu_jgylogo3.gif

可以看出,getFile() 方法可以拿到参数值,而getPath() 就是只取文件名,JDK中文文档相关api如下:

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有