1. 程式人生 > >this.getClass().getClassLoader().getResource和this.getClass().getResource的區別和聯絡

this.getClass().getClassLoader().getResource和this.getClass().getResource的區別和聯絡

專案路徑:

在這裡插入圖片描述

classLoader.getResource(name)

該方法的作用與class.getResource(name)的作用一樣,接收一個表示路徑的引數,返回一個URL物件,該URL物件表示name對應的資源(檔案)。但是,與class.getResource(name)不同的是,該方法只能接收一個相對路徑,不能接收絕對路徑如/xxx/xxx。並且,接收的相對路徑是相對於專案的包的根目錄來說的。

System.out.println(this.getClass().getClassLoader().getResource(""));
System.out.println(this.
getClass().getClassLoader().getResource("/")); System.out.println(this.getClass().getClassLoader().getResource("/demo2.txt")); System.out.println(this.getClass().getClassLoader().getResource("demo2.txt")); // file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/
// null // null // file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/demo2.txt

Class.getResource(name)

該方法接收一個表示檔案路徑的數,返回一個URL物件,該URL物件表示的name指向的那個資源(檔案)。這個方法是在類中根據name獲取資源。其中,name可以是檔案的相對路徑(相對於該class類來說),也可以是絕對路徑(絕對路徑的話,根目錄符號/是代表專案路徑而不是磁碟的根目錄)

System.out.println(this.getClass().getResource(""));
System.out.println(this.getClass().getResource("/"));
System.out.println(this.getClass().getResource("/demo2.txt"));
System.out.println(this.getClass().getResource("demo2.txt"));
//        file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/
//        file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/
//        file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/demo2.txt
//        file:/D:/Java%e8%af%be%e7%a8%8b/Spring%20Boot%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%8d%9a%e5%ae%a2%e7%b3%bb%e7%bb%9f%e5%ae%9e%e6%88%98%e8%a7%86%e9%a2%91%e6%95%99%e7%a8%8b/nioDemo/out/production/nioDemo/demo2.txt

class.getResource(name)classLoader.getResource(name)的聯絡