Java中關(guān)于文件路徑讀取問題的分析
Java讀取文件路徑
記錄一種通用獲取文件絕對路徑的方法,即使代碼換了位置了,這樣編寫也是通用的:
注意:
使用以下方法的前提是文件必須在類路徑下,類路徑:凡是在src下的都是類路徑。

1.拿到User.properties文件的絕對路徑:

package com.lxc.domain;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Test {
public static void main(String[] args) {
try {
/**
* Thread.currentThread() 當(dāng)前線程對象
* getContextClassLoader() 線程方法,獲取的是當(dāng)前線程的類加載器對象
* getResource("") 這是類加載器對象的方法,當(dāng)前線程的類加載器默認(rèn)從類的根路徑下加載資源
*
*/
String path = Thread.currentThread().getContextClassLoader().getResource("User.properties").getPath();
System.out.println(path);
FileReader reader = new FileReader(path);
}
}

2.還可以以流的方式直接獲取到文件流,直接加載
![]()
package com.lxc.domain;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Fanshe {
public static void main(String[] args) {
// 以流的方式讀取
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/lxc/domain/userProperties.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
inputStream.close();
System.out.println(properties.getProperty("username"));
} catch (IOException e) {
e.printStackTrace();
}
}
}

這里還要注意一個小點:
資源配置文件放到resource文件夾下和放到包路徑下,打包編譯之后資源文件的存放位置會不一樣,放到resource文件夾下打包編譯值后的位置在classes文件夾下:

放到包文件夾,打包編譯值后的位置在相應(yīng)的包下:

3.通過資源綁定器獲取到資源文件信息
使用資源綁定器獲取資源文件信息,前提:
(1)資源文件必須在類路徑下,如果不在resource文件夾下,而是在包下,處理方式如下;
(2)參數(shù)不需要帶后綴

package com.lxc.domain;
import java.util.ResourceBundle;
public class Fanshe {
public static void main(String[] args) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("User");
String username = resourceBundle.getString("username");
System.out.println(username);
}

如果在包文件夾下,路徑應(yīng)該這樣寫:
package com.lxc.domain;
import java.util.ResourceBundle;
public class Fanshe {
public static void main(String[] args) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("com/lxc/domain/User");
String username = resourceBundle.getString("username");
System.out.println(username);
}
}
![]()
到此這篇關(guān)于Java中關(guān)于文件路徑讀取問題的分析的文章就介紹到這了,更多相關(guān)Java讀取文件路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解springboot+mybatis多數(shù)據(jù)源最簡解決方案
本篇文章主要介紹了詳解springboot+mybatis多數(shù)據(jù)源最簡解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Mybatis實現(xiàn)動態(tài)增刪改查功能的示例代碼
這篇文章主要介紹了Mybatis實現(xiàn)動態(tài)增刪改查功能的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
JAVA中ListIterator和Iterator詳解與辨析(推薦)
這篇文章主要介紹了JAVA中ListIterator和Iterator詳解與辨析,需要的朋友可以參考下2017-04-04
springboot調(diào)用python腳本的實現(xiàn)示例
本文介紹了在SpringBoot應(yīng)用中調(diào)用Python腳本,包括ProcessBuilder類和ApacheCommonsExec庫兩種方法,具有一定的參考價值,感興趣的可以了解一下2024-12-12
SpringBoot集成elasticsearch使用圖文詳解
Spring Boot集成Elasticsearch其實非常簡單,這篇文章主要給大家介紹了關(guān)于SpringBoot集成elasticsearch使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Java使用Scala實現(xiàn)尾遞歸優(yōu)化來解決爆棧問題
Scala?作為一種多范式的編程語言,結(jié)合了面向?qū)ο蠛秃瘮?shù)式編程的特性,在?Scala?中,尾遞歸?是通過編譯器優(yōu)化來防止棧溢出問題的,尾遞歸優(yōu)化是一種特殊的優(yōu)化方式,可以讓遞歸調(diào)用不使用新的棧幀,所以本文介紹了在Java項目中如何使用Scala實現(xiàn)尾遞歸優(yōu)化來解決爆棧問題2024-10-10
Spring Boot中的JdbcTemplate是什么及用法小結(jié)
Spring Boot中的JdbcTemplate是一個強大的數(shù)據(jù)庫訪問工具,它簡化了數(shù)據(jù)庫操作的過程,在本文中,我們了解了JdbcTemplate的基本概念,并演示了如何在Spring Boot應(yīng)用程序中使用它,感興趣的朋友跟隨小編一起看看吧2023-10-10

