Java如何獲取相對(duì)路徑文件
Java獲取相對(duì)路徑文件
1. 文件在src下
class.getResourceAsStream(“”)獲得的是相對(duì)路徑 class.getClassLoader().getResourceAsStream(“”)加載器獲得是絕對(duì)路徑
Class.getResourceAsStream(String path) :
- (1)不以 “/” 開(kāi)頭時(shí),默認(rèn)是從此類(lèi)所在的包下取資源。
- (2)以**“/”**開(kāi)頭,則是從ClassPath(Src根目錄)根下獲取。
Class.getClassLoader.getResourceAsStream(String path) :
- 默認(rèn)則是從ClassPath根下獲取,path不能以’/'開(kāi)頭。
2. 文件在src同級(jí)目錄下

InputStream in = new BufferedInputStream(new FileInputStream("./test/aaa.txt"));1.FileTest.class.getResource("")
得到的是當(dāng)前類(lèi)FileTest.class文件的URI目錄。不包括自己!
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/
2.FileTest.class.getResource("/")
得到的是當(dāng)前的classpath的絕對(duì)URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
3.Thread.currentThread().getContextClassLoader().getResource("")
得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
4.FileTest.class.getClassLoader().getResource("")
得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
5.ClassLoader.getSystemResource("")
得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
我推薦使用Thread.currentThread().getContextClassLoader().getResource("")來(lái)得到當(dāng)前的classpath的絕對(duì)路徑的URI表示法。
Java獲取文件大?。ㄎ募⒙窂剑?/h2>
文件大?。窂剑?/h3>
/**
* 文件大小--路徑
*
* @return
*/
public static long getFileLength(String downloadUrl) {
if(downloadUrl == null || "".equals(downloadUrl)){
return 0L ;
}
URL url = null;
try {
url = new URL(downloadUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
return 0L;
}
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("HEAD");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows 7; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 YNoteCef/5.8.0.1 (Windows)");
return (long) conn.getContentLength();
} catch (IOException e) {
return 0L;
} finally {
conn.disconnect();
}
}
/**
* 文件大小--路徑
*
* @return
*/
public static long getFileLength(String downloadUrl) {
if(downloadUrl == null || "".equals(downloadUrl)){
return 0L ;
}
URL url = null;
try {
url = new URL(downloadUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
return 0L;
}
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("HEAD");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows 7; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 YNoteCef/5.8.0.1 (Windows)");
return (long) conn.getContentLength();
} catch (IOException e) {
return 0L;
} finally {
conn.disconnect();
}
}文件大?。ㄎ募?/h3>
/**
* 文件大小--文件
*
* @return
*/
public static int getFileSize(File file) {
int fileSize = 0;
FileInputStream fis = null;
try {
if (file.exists() && file.isFile()) {
String fileName = file.getName();
fis = new FileInputStream(file);
fileSize = fis.available();
System.out.println("文件" + fileName + "的大小是:" + fis.available() + "\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != fis) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileSize;
}
/**
* 文件大小--文件
*
* @return
*/
public static int getFileSize(File file) {
int fileSize = 0;
FileInputStream fis = null;
try {
if (file.exists() && file.isFile()) {
String fileName = file.getName();
fis = new FileInputStream(file);
fileSize = fis.available();
System.out.println("文件" + fileName + "的大小是:" + fis.available() + "\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != fis) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileSize;
}測(cè)試下
public static void main(String[] args) {
File file = new File("C:\\Users\\xuzh\\Desktop\\6f3c0052d684451a92e7fb5b55eda9fd.jpg");
getFileSize(file);
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JAVA獲取文件絕對(duì)路徑的方法
- java 獲取項(xiàng)目文件路徑實(shí)現(xiàn)方法
- 完美解決Java獲取文件路徑出現(xiàn)亂碼的問(wèn)題
- Java如何獲取resources下的文件路徑和創(chuàng)建臨時(shí)文件
- Java獲取文件路徑常用方法解析
- JAVA獲取當(dāng)前項(xiàng)目和文件所在路徑的實(shí)例代碼
- Java多種獲取項(xiàng)目路徑下的文件方式
- Java實(shí)現(xiàn)動(dòng)態(tài)獲取文件的絕對(duì)路徑
- Java獲取文件的路徑及常見(jiàn)問(wèn)題解決方案
- java獲取文件路徑所有方式的詳細(xì)介紹
相關(guān)文章
Java實(shí)現(xiàn)簡(jiǎn)易提款機(jī)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易提款機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Java如何簡(jiǎn)單快速入門(mén)JWT(token生成與驗(yàn)證)
這篇文章主要給大家介紹了關(guān)于Java如何簡(jiǎn)單快速入門(mén)JWT(token生成與驗(yàn)證)的相關(guān)資料,JWT是一個(gè)加密的字符串,JWT傳輸?shù)男畔⒔?jīng)過(guò)了數(shù)字簽名,因此傳輸?shù)男畔⒖梢员或?yàn)證和信任,需要的朋友可以參考下2023-12-12
Java IO字符流緩沖區(qū)實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java IO字符流緩沖區(qū)實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Java模擬棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)的基本示例講解
這篇文章主要介紹了Java模擬棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)的基本示例,棧的后進(jìn)先出和隊(duì)列的先進(jìn)先出是數(shù)據(jù)結(jié)構(gòu)中最基礎(chǔ)的知識(shí),本文則又對(duì)Java實(shí)現(xiàn)棧和隊(duì)列結(jié)構(gòu)的方法進(jìn)行了細(xì)分,需要的朋友可以參考下2016-04-04
深入解析java HashMap實(shí)現(xiàn)原理
這篇文章主要介紹了深入解析java HashMap實(shí)現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下2015-09-09
SpringMVC使用hibernate-validator進(jìn)行參數(shù)校驗(yàn)最佳實(shí)踐記錄
這篇文章主要介紹了SpringMVC使用hibernate-validator進(jìn)行參數(shù)校驗(yàn)最佳實(shí)踐,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
Java代碼混淆工具ProGuard使用指南(附有1.8以上和以下使用工具)
ProGuard是一個(gè)開(kāi)源的Java?class文件縮小器、優(yōu)化器、混淆器和預(yù)驗(yàn)證器,它通過(guò)刪除未使用的類(lèi)、字段、方法和屬性,優(yōu)化字節(jié)碼指令,并重命名類(lèi)、字段和方法,使反編譯后的代碼難以理解,從而提高應(yīng)用的安全性,本文給大家詳細(xì)介紹了ProGuard使用指南,需要的朋友可以參考下2025-05-05
RocketMQ存儲(chǔ)文件的實(shí)現(xiàn)
這篇文章主要介紹了RocketMQ存儲(chǔ)文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

