国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Java路徑問題最終解決方案

2019-11-18 15:29:04
字體:
供稿:網(wǎng)友
前言
java的路徑問題,非常難搞。最近的工作涉及到創(chuàng)建和讀取文件的工作,這里我就給大家徹底得解決Java路徑問題。
我編寫了一個方法,比ClassLoader.getResource(String 相對路徑)方法的能力更強。它可以接受“../”這樣的參數(shù),答應(yīng)我們用相對路徑來定位classpath外面的資源。這樣,我們就可以使用相對于classpath的路徑,定位所有位置的資源!
 
Java路徑
Java中使用的路徑,分為兩種:絕對路徑和相對路徑。具體而言,又分為四種:
一、URI形式的絕對資源路徑
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b
URL是URI的特例。URL的前綴/協(xié)議,必須是Java熟悉的。URL可以打開資源,而URI則不行。
URL和URI對象可以互相轉(zhuǎn)換,使用各自的toURI(),toURL()方法即可!
 
二、本地系統(tǒng)的絕對路徑
D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b
Java.io包中的類,需要使用這種形式的參數(shù)。
但是,它們一般也提供了URI類型的參數(shù),而URI類型的參數(shù),接受的是URI樣式的String。因此,通過URI轉(zhuǎn)換,還是可以把URI樣式的絕對路徑用在java.io包中的類中。
 
三、相對于classpath的相對路徑
如:相對于
file:/D:/java/eclipse32/workspace/jbpmtest3/bin/這個路徑的相對路徑。其中,bin是本項目的classpath。所有的Java源文件編譯后的.class文件復(fù)制到這個目錄中。
 
 
四、相對于當前用戶目錄的相對路徑
就是相對于System.get
對于一般項目,這是項目的根路徑。對于JavaEE服務(wù)器,這可能是服務(wù)器的某個路徑。這個并沒有統(tǒng)一的規(guī)范!
所以,絕對不要使用“相對于當前用戶目錄的相對路徑”。然而:
默認情況下,java.io 包中的類總是根據(jù)當前用戶目錄來分析相對路徑名。此目錄由系統(tǒng)屬性 user.dir 指定,通常是 Java 虛擬機的調(diào)用目錄。
這就是說,在使用java.io包中的類時,最好不要使用相對路徑。否則,雖然在J2SE應(yīng)用程序中可能還算正常,但是到了J2EE程序中,一定會出問題!而且這個路徑,在不同的服務(wù)器中都是不同的!
 
相對路徑最佳實踐
推薦使用相對于當前classpath的相對路徑
因此,我們在使用相對路徑時,應(yīng)當使用相對于當前classpath的相對路徑。
ClassLoader類的getResource(String name),getResourceAsStream(String name)等方法,使用相對于當前項目的classpath的相對路徑來查找資源。
讀取屬性文件常用到的ResourceBundle類的getBundle(String path)也是如此。
通過查看ClassLoader類及其相關(guān)類的源代碼,我發(fā)現(xiàn),它實際上還是使用了URI形式的絕對路徑。通過得到當前classpath的URI形式的絕對路徑,構(gòu)建了相對路徑的URI形式的絕對路徑。(這個實際上是猜想,因為JDK內(nèi)部調(diào)用了SUN的源代碼,而這些代碼不屬于JDK,不是開源的。)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新源县| 丽水市| 城固县| 仙桃市| 平利县| 莱阳市| 永定县| 汾阳市| 八宿县| 利辛县| 光山县| 周至县| 突泉县| 普定县| 灵山县| 太康县| 铁岭县| 陇川县| 江津市| 通化县| 育儿| 福海县| 扬中市| 墨玉县| 吴川市| 兴文县| 积石山| 宜兰县| 铅山县| 临沧市| 麻江县| 正安县| 襄城县| 固始县| 华安县| 临西县| 德江县| 格尔木市| 瑞昌市| 江川县| 基隆市|