最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java獲取文件路徑所有方式的詳細(xì)介紹

 更新時(shí)間:2025年08月23日 09:55:16   作者:豬油唐  
在Java編程中我們經(jīng)常需要獲取文件的路徑,以便對(duì)文件進(jìn)行讀取、寫入或其他操作,這篇文章主要介紹了java獲取文件路徑所有方式的相關(guān)資料,需要的朋友可以參考下

前言

在 Java 中,獲取文件路徑是開發(fā)中常見的需求,尤其是在處理資源文件、配置文件或動(dòng)態(tài)路徑拼接時(shí)。以下是 Java 獲取文件路徑的所有方式 的詳細(xì)介紹:

一、使用System屬性獲取路徑

1. 獲取當(dāng)前工作目錄

String currentDir = System.getProperty("user.dir");
System.out.println("當(dāng)前工作目錄: " + currentDir);
  • 適用場(chǎng)景:獲取 Java 程序的啟動(dòng)目錄(即命令行運(yùn)行程序的位置)。

2. 獲取用戶主目錄

String userHome = System.getProperty("user.home");
System.out.println("用戶主目錄: " + userHome);
  • 適用場(chǎng)景:獲取操作系統(tǒng)用戶的主目錄(如 Windows 的 C:\Users\用戶名)。

3. 獲取 Java 安裝目錄

String javaHome = System.getProperty("java.home");
System.out.println("Java 安裝目錄: " + javaHome);
  • 適用場(chǎng)景:獲取 Java 運(yùn)行時(shí)的安裝路徑。

二、使用File類獲取路徑

1. 獲取文件的絕對(duì)路徑

File file = new File("example.txt");
String absolutePath = file.getAbsolutePath();
System.out.println("絕對(duì)路徑: " + absolutePath);
  • 適用場(chǎng)景:獲取當(dāng)前文件對(duì)象的絕對(duì)路徑(基于當(dāng)前工作目錄)。

2. 獲取規(guī)范路徑(解析符號(hào)鏈接)

try {
    String canonicalPath = file.getCanonicalPath();
    System.out.println("規(guī)范路徑: " + canonicalPath);
} catch (IOException e) {
    e.printStackTrace();
}
  • 適用場(chǎng)景:獲取去除符號(hào)鏈接后的實(shí)際路徑(如 ..~ 的解析)。

3. 獲取父目錄路徑

String parentPath = file.getParent();
System.out.println("父目錄: " + parentPath);
  • 適用場(chǎng)景:獲取文件的父目錄路徑(如 C:\project\srcC:\project\src\main.java 的父目錄)。

三、使用ClassLoader獲取資源路徑

1. 使用Class.getResource()獲取類路徑下的資源

URL resourceUrl = Demo.class.getResource("/config.properties");
if (resourceUrl != null) {
    String resourcePath = resourceUrl.getPath();
    System.out.println("資源路徑: " + resourcePath);
}
  • 適用場(chǎng)景:獲取類路徑(src/main/resources)下的資源文件路徑。
  • 注意:路徑以 / 開頭表示從類路徑根目錄開始查找。

2. 使用ClassLoader.getResource()獲取資源

ClassLoader classLoader = Demo.class.getClassLoader();
URL resourceUrl = classLoader.getResource("config.properties");
if (resourceUrl != null) {
    String resourcePath = resourceUrl.getPath();
    System.out.println("資源路徑: " + resourcePath);
}
  • 適用場(chǎng)景:與 Class.getResource() 類似,但路徑不以 / 開頭。

3. 解碼 URL 路徑中的特殊字符

try {
    String decodedPath = URLDecoder.decode(resourceUrl.getPath(), "UTF-8");
    System.out.println("解碼后路徑: " + decodedPath);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
  • 適用場(chǎng)景:處理 URL 路徑中的編碼(如 %20 表示空格)。

四、使用Paths類(Java 7+)

1. 獲取當(dāng)前工作目錄的絕對(duì)路徑

Path currentDir = Paths.get(".").toAbsolutePath();
System.out.println("當(dāng)前目錄: " + currentDir);

2. 拼接路徑

Path filePath = Paths.get(currentDir.toString(), "example.txt");
System.out.println("文件路徑: " + filePath);
  • 適用場(chǎng)景:跨平臺(tái)路徑拼接(自動(dòng)適配 /\)。

五、使用URI獲取路徑

1. 將文件轉(zhuǎn)換為 URI

File file = new File("example.txt");
URI uri = file.toURI();
System.out.println("URI 路徑: " + uri.getPath());

2. 使用 URI 加載資源

URL resourceUrl = Demo.class.getResource("/example.txt");
URI resourceUri = resourceUrl.toURI();
System.out.println("URI 路徑: " + resourceUri);
  • 適用場(chǎng)景:處理網(wǎng)絡(luò)資源或本地文件路徑的統(tǒng)一標(biāo)識(shí)。

六、Web 應(yīng)用中的路徑獲取

1. JSP 中獲取路徑

<%
    // 獲取當(dāng)前頁面全路徑
    String requestURI = request.getRequestURI();
    out.println("請(qǐng)求路徑: " + requestURI);

    // 獲取工程名
    String contextPath = request.getContextPath();
    out.println("工程名: " + contextPath);

    // 獲取服務(wù)器上的物理路徑
    String realPath = application.getRealPath("/");
    out.println("物理路徑: " + realPath);
%>

2. Servlet 中獲取路徑

// 獲取工程目錄
String realPath = getServletContext().getRealPath("/");
System.out.println("工程目錄: " + realPath);

// 獲取請(qǐng)求地址
String requestURL = request.getRequestURL().toString();
System.out.println("請(qǐng)求地址: " + requestURL);

七、Spring Boot 中獲取資源路徑

1. 使用getResourceAsStream讀取資源

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("config.properties");
if (inputStream != null) {
    // 讀取流內(nèi)容
}
  • 適用場(chǎng)景:資源嵌套在 JAR 包中時(shí),無法直接獲取文件路徑,需通過輸入流讀取。

八、其他方式

1. 使用ProtectionDomain獲取類文件路徑

URL classLocation = Demo.class.getProtectionDomain().getCodeSource().getLocation();
String classPath = classLocation.getPath();
System.out.println("類文件路徑: " + classPath);
  • 適用場(chǎng)景:獲取編譯后的 .class 文件路徑(如 JAR 包路徑)。

2. 使用File.separator處理跨平臺(tái)路徑

String path = "D:" + File.separator + "test" + File.separator + "file.txt";
System.out.println("跨平臺(tái)路徑: " + path);
  • 適用場(chǎng)景:手動(dòng)拼接路徑時(shí)確保兼容性(Windows 用 \,Linux 用 /)。

九、注意事項(xiàng)

  1. 資源在 JAR 包內(nèi)時(shí)

    • 無法通過 getFile() 獲取實(shí)際路徑,需使用 getResourceAsStream() 讀取流。
    • 示例:
      InputStream inputStream = getClass().getResourceAsStream("/config.properties");
      
  2. 路徑編碼問題

    • URL 路徑可能包含編碼(如 %20 表示空格),需使用 URLDecoder 解碼。
  3. 相對(duì)路徑與絕對(duì)路徑

    • 相對(duì)路徑基于當(dāng)前工作目錄(user.dir),絕對(duì)路徑是完整路徑。
  4. Web 應(yīng)用與普通 Java 應(yīng)用

    • Web 應(yīng)用中路徑通常基于 WebRootWEB-INF/classes。
    • 普通 Java 應(yīng)用中路徑基于項(xiàng)目根目錄或類路徑。

總結(jié)

方法適用場(chǎng)景是否跨平臺(tái)是否涉及 I/O
System.getProperty獲取系統(tǒng)屬性路徑
File.getAbsolutePath獲取文件絕對(duì)路徑
ClassLoader.getResource獲取類路徑資源
Paths.get(...)跨平臺(tái)路徑拼接
URI統(tǒng)一資源標(biāo)識(shí)
Web 應(yīng)用中的 request獲取 Web 請(qǐng)求路徑
getResourceAsStream讀取 JAR 內(nèi)資源

根據(jù)具體需求選擇合適的方法,確保路徑處理的靈活性和兼容性。

到此這篇關(guān)于java獲取文件路徑所有方式的文章就介紹到這了,更多相關(guān)java獲取文件路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解

    Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解

    本篇文章主要介紹了Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Java 正則表達(dá)式詳細(xì)介紹

    Java 正則表達(dá)式詳細(xì)介紹

    本文主要介紹 Java 正則表達(dá)式的內(nèi)容,這里整理了Java 正則表達(dá)式的相關(guān)資料,并詳細(xì)介紹,附有代碼示例,有興趣的小伙伴可以參考下
    2016-09-09
  • Spring Cloud搭建eureka過程圖解

    Spring Cloud搭建eureka過程圖解

    這篇文章主要介紹了Spring Cloud搭建eureka過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java稀疏數(shù)組詳細(xì)圖文教程

    Java稀疏數(shù)組詳細(xì)圖文教程

    當(dāng)一個(gè)數(shù)組中的大部分元素為相同的值,可使用稀疏數(shù)組來保存該數(shù)組,可以將稀疏數(shù)組看做是普通數(shù)組的壓縮,這篇文章主要給大家介紹了關(guān)于Java稀疏數(shù)組的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Springboot項(xiàng)目中如何讓非Spring管理的類獲得一個(gè)注入的Bean

    Springboot項(xiàng)目中如何讓非Spring管理的類獲得一個(gè)注入的Bean

    這篇文章主要介紹了Springboot項(xiàng)目中如何讓非Spring管理的類獲得一個(gè)注入的Bean問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java8中創(chuàng)建Stream流的幾種常見方式

    Java8中創(chuàng)建Stream流的幾種常見方式

    在Java 8中,??Stream?? API 是一種新的處理數(shù)據(jù)的方式,它允許以聲明式的方式來處理數(shù)據(jù)集合,本文將詳細(xì)介紹在Java 8中創(chuàng)建 ??Stream?? 流的幾種常見方式,大家可以根據(jù)需要進(jìn)行選擇
    2025-05-05
  • 關(guān)于Kill指令停掉Java程序的問題

    關(guān)于Kill指令停掉Java程序的問題

    這篇文章主要介紹了Kill指令停掉Java程序的思考,主要探究kill指令和java的關(guān)閉鉤子的問題,需要的朋友可以參考下
    2021-10-10
  • Java并發(fā)編程中構(gòu)建自定義同步工具

    Java并發(fā)編程中構(gòu)建自定義同步工具

    這篇文章主要介紹了Java并發(fā)編程中構(gòu)建自定義同步工具,本文講解了可阻塞狀態(tài)依賴操作的結(jié)構(gòu)、有界緩存實(shí)現(xiàn)基類示例、阻塞實(shí)現(xiàn)方式一:拋異常給調(diào)用者、阻塞實(shí)現(xiàn)方式二:通過輪詢和休眠、阻塞實(shí)現(xiàn)方式三:條件隊(duì)列等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Java?IO流總結(jié)

    Java?IO流總結(jié)

    文章系統(tǒng)講解了Java?IO流的核心知識(shí)點(diǎn),包括字節(jié)流與字符流的分類及操作、緩沖流的高效讀寫、轉(zhuǎn)換流處理編碼問題、序列化流實(shí)現(xiàn)對(duì)象持久化、打印流控制臺(tái)輸出、壓縮流處理文件打包,感興趣的朋友跟隨小編一起看看吧的相關(guān)資料
    2025-08-08
  • Java實(shí)現(xiàn)excel大數(shù)據(jù)量導(dǎo)入

    Java實(shí)現(xiàn)excel大數(shù)據(jù)量導(dǎo)入

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)excel大數(shù)據(jù)量導(dǎo)入,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論

武乡县| 景德镇市| 沂水县| 仪征市| 志丹县| 阜阳市| 巴马| 平潭县| 府谷县| 舒城县| 瑞丽市| 新晃| 望江县| 信阳市| 濮阳县| 博罗县| 盐亭县| 鄯善县| 镇安县| 天气| 成安县| 临猗县| 卢湾区| 胶南市| 平顶山市| 阿鲁科尔沁旗| 大竹县| 蒙阴县| 彭阳县| 楚雄市| 兴山县| 康乐县| 岑溪市| 浦东新区| 呼图壁县| 会泽县| 通许县| 柳河县| 遵义市| 宜黄县| 临城县|