Java知多少——相對路徑和絕對路徑

一般在編程中,文件路徑分為相對路徑和絕對路徑,絕對路徑比較好處理,但是不靈活。因此我們在編程中對文件進(jìn)行操作的時候,一般讀取文件的相對路徑。

相對路徑——主要是相對于誰?

可以是類加載器路徑,或者是當(dāng)前java文件文件下的路徑,在JSP編程中可能是相對于站點的路徑。

序 ClassPath路徑

框架小知識-Spring單元測試(classpath到底在哪里)

src下的文件編譯之后就會放在WEB-INF/class路徑下面。默認(rèn)的路徑就是在這里,注意,若是直接放在WEB-INF目錄下是不會在classpath路徑下的。

若是maven搭建的1項目,Resource也是classpath路徑。

1. 獲取路徑的方法

1.1 相對于classpath路徑

java項目中:%項目%bin/
javaEE項目中(war):%項目%/target/WEB-INF/class/
javaEE項目中(jar):%項目%/target/class/

Class.getResource("");
Class.getResource("/");
Class.getClassLoader().getResource("");
Class.getClassLoader().getResource("/");

當(dāng)前路徑:classpath路徑。

以SpringBoot項目為例

String path = this.getClass().getResource("").getPath();
String path1 = this.getClass().getResource("/").getPath();
String path2 = this.getClass().getClassLoader().getResource("").getPath();
URL path3 = this.getClass().getClassLoader().getResource("/");
執(zhí)行結(jié)果

有什么用呢?可以將一些導(dǎo)出文件模板放在Resource目錄下,這樣的話,我們可以通過上述方法直接可以讀取到文件模板。

需要注意的是:本質(zhì)上以classpath路徑為當(dāng)前路徑,若是資源文件不存在,那么調(diào)用getPath()方法出現(xiàn)空指針異常。

1.2 相對于web路徑

request.getServletContext().getResource("");
request.getServletContext().getResource("/");

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        URL url = getServletContext().getResource("");
        System.out.println("路徑:"+url);  //項目根目錄下
        
        url = getServletContext().getResource("/");
        System.out.println("路徑/:"+url);  //項目根目錄下
    }

在JavaEE環(huán)境(war包)中,這個路徑就是tomcat目錄下的webapps的項目根路徑。也就是取得站點的位置。

我們可以通過使用getServletContext().getContext(
"/")和request.getRealPath("/")取得站點的絕對路徑;而getContextpath()取得是站點的相對路徑【/項目名】。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容