自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹Java路徑的分類與使用注意事項(xiàng)

開發(fā) 后端
本文介紹的是java中路徑的分類和使用時(shí)的注意事項(xiàng)。希望對(duì)大家有幫助,一起來看。

Java路徑簡(jiǎn)單的分可以分為兩種:相對(duì)路徑和相對(duì)路徑。 下面引見有關(guān)Java路徑分類的一些細(xì)節(jié), 以及運(yùn)用Java路徑時(shí)需求注意的問題。 

具體而言,Java路徑又分為四種:

一、URI方式的相對(duì)資源路徑如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa. b URL是URI的特例。 URL的前綴/協(xié)議, 必須是Java看法的。 URL可以打開資源, 而URI則不行。 URL和URI對(duì)象可以相互轉(zhuǎn)換, 運(yùn)用各自的toURI(), toURL()辦法即可。 

二、本地系統(tǒng)的相對(duì)路徑 D:/java/eclipse32/workspace/jbpmtest3/bin/aaa. b Java. io包中的類, 需求運(yùn)用這種方式的參數(shù)。 但是, 它們一般也提供了URI類型的參數(shù), 而URI類型的參數(shù), 接受的是URI款式的String。 因而, 通過URI轉(zhuǎn)換, 還是可以把URI款式的相對(duì)路徑用在java. io包中的類中。 

三、相關(guān)于classpath的相對(duì)路徑如:相關(guān)于 file:/D:/java/eclipse32/workspace/jbpmtest3/bin/這個(gè)路徑的相對(duì)路徑。 其中, bin是本項(xiàng)目的classpath。 所有的Java源文件編譯后的. class文件復(fù)制到這個(gè)目錄中。 

四、相關(guān)于當(dāng)前用戶目錄的相對(duì)路徑就是相關(guān)于System. getProperty("user. dir")返回的路徑。 關(guān)于一般項(xiàng)目, 這是項(xiàng)目的根路徑。 關(guān)于JavaEE效勞器, 這能夠是效勞器的某個(gè)路徑。 這個(gè)并沒有統(tǒng)一的規(guī)范。 所以, 相對(duì)不要運(yùn)用“相關(guān)于當(dāng)前用戶目錄的相對(duì)路徑”。 

但是:默認(rèn)狀況下, java. io 包中的類總是根據(jù)當(dāng)前用戶目錄來分析相對(duì)路徑名。 

此目錄由系統(tǒng)屬性 user. dir 指定, 通常是 Java 虛擬機(jī)的調(diào)用目錄。 

這就是說, 在運(yùn)用java. io包中的類時(shí), 最好不要運(yùn)用相對(duì)路徑。 否則, 雖然在J2SE應(yīng)用程序中能夠還算正常, 但是到了J2EE程序中, 一定會(huì)出問題。 而且這個(gè)路徑, 在不同的效勞器中都是不同的。 相對(duì)路徑最佳實(shí)際引薦運(yùn)用相關(guān)于當(dāng)前classpath的相對(duì)路徑因而, 我們?cè)谶\(yùn)用相對(duì)路徑時(shí), 該當(dāng)運(yùn)用相關(guān)于當(dāng)前classpath的相對(duì)路徑。 

ClassLoader類的getResource(String name), getResourceAsStream(String name)等辦法, 運(yùn)用相關(guān)于當(dāng)前項(xiàng)目的classpath的相對(duì)路徑來查找資源。 讀取屬性文件常用到的ResourceBundle類的getBundle(String path)也是如此。 通過查看ClassLoader類及其相關(guān)類的源代碼, 我發(fā)現(xiàn), 它實(shí)踐上還是運(yùn)用了URI方式的相對(duì)路徑。 通過失掉當(dāng)前classpath的URI方式的相對(duì)路徑, 構(gòu)建了相對(duì)路徑的URI方式的相對(duì)路徑。 (這個(gè)實(shí)踐上是猜想, 由于JDK外部調(diào)用了SUN的源代碼, 而這些代碼不屬于JDK, 不是開源的。 ) 相對(duì)路徑本質(zhì)上還是相對(duì)路徑因而, 歸根結(jié)底, Java本質(zhì)上只能運(yùn)用相對(duì)路徑來尋找資源。

所有的相對(duì)路徑尋找資源的辦法, 都不過是一些便利辦法。 不過是API在底層協(xié)助我們構(gòu)建了相對(duì)路徑, 從而找到資源的。 失掉classpath和當(dāng)前類的相對(duì)路徑的一些辦法 下面是一些失掉classpath和當(dāng)前類的相對(duì)路徑的一些辦法。

Java路徑:你能夠需求運(yùn)用其中的一些辦法來失掉你需求的資源的相對(duì)路徑。 

1, FileTest. class. getResource("") 失掉的是當(dāng)前類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/ 我引薦運(yùn)用Thread. currentThread(). getContextClassLoader(). getResource("")來失掉當(dāng)前的classpath的相對(duì)路徑的URI表示法。 Web應(yīng)用程序中資源的尋址 上文中說過, 當(dāng)前用戶目錄, 即相關(guān)于System. getProperty("user. dir")返回的路徑。

關(guān)于JavaEE效勞器, 這能夠是效勞器的某個(gè)路徑, 這個(gè)并沒有統(tǒng)一的規(guī)范。 

而不是我們發(fā)布的Web應(yīng)用程序的根目錄。 

這樣, 在Web應(yīng)用程序中, 我們相對(duì)不能運(yùn)用相關(guān)于當(dāng)前用戶目錄的相對(duì)路徑。 

在Web應(yīng)用程序中, 我們一般通過ServletContext. getRealPath("/")辦法失掉Web應(yīng)用程序的根目錄的相對(duì)路徑。 這樣, 我們只需求提供相關(guān)于Web應(yīng)用程序根目錄的路徑, 就可以構(gòu)建出定位資源的相對(duì)路徑。 這是我們開發(fā)Web應(yīng)用程序時(shí)一般所采取的戰(zhàn)略。 

通用的相對(duì)路徑解決辦法 Java中各種相對(duì)路徑非常多, 不容易運(yùn)用, 非常容易出錯(cuò)。 因而, 我編寫了一個(gè)便利辦法, 協(xié)助更容易的解決相對(duì)路徑問題。 

Web應(yīng)用程序中運(yùn)用JavaSE運(yùn)轉(zhuǎn)的資源尋址問題在JavaSE程序中, 我們一般運(yùn)用classpath來作為存放資源的目的地。 但是, 在Web應(yīng)用程序中, 我們一般運(yùn)用classpath外面的WEB-INF及其子目錄作為資源文件的存放地。

在Web應(yīng)用程序中, 我們一般通過ServletContext. getRealPath("/")辦法失掉Web應(yīng)用程序的根目錄的相對(duì)路徑。 這樣, 我們只需求提供相關(guān)于Web應(yīng)用程序根目錄的路徑, 就可以構(gòu)建出定位資源的相對(duì)路徑。

Web應(yīng)用程序, 可以作為Web應(yīng)用程序停止發(fā)布和運(yùn)轉(zhuǎn)。 

但是,我們也經(jīng)常會(huì)以JavaSE的方式來運(yùn)轉(zhuǎn)Web應(yīng)用程序的某個(gè)類的main辦法。

或者,運(yùn)用JUnit測(cè)試。 這都需求運(yùn)用JavaSE的方式來運(yùn)轉(zhuǎn)。

這樣,我們就無法運(yùn)用ServletContext. getRealPath("/")辦法失掉Web應(yīng)用程序的根目錄的相對(duì)路徑。

而JDK提供的ClassLoader類, 它的getResource(String name), getResourceAsStream(String name)等辦法, 運(yùn)用相關(guān)于當(dāng)前項(xiàng)目的classpath的相對(duì)路徑來查找資源。 讀取屬性文件常用到的ResourceBundle類的getBundle(String path)也是如此。 它們都只能運(yùn)用相對(duì)路徑來讀取classpath下的資源, 無法定位到classpath外面的資源。 Classpath外配置文件讀取問題如,我們運(yùn)用測(cè)試驅(qū)動(dòng)開發(fā)的辦法, 開發(fā)Spring、Hibernate、iBatis等運(yùn)用配置文件的Web應(yīng)用程序, 就會(huì)遇到問題。

雖然Spring本人提供了FileSystem(也就是相關(guān)于user, dir目錄)來讀取Web配置文件的辦法, 但是終究不是很方便。 而且與Web程序中的代碼運(yùn)用方式不分歧。

至于Hibernate, iBatis就更麻煩了。只要把配置文件移到classpath下, 否則基本不能夠運(yùn)用測(cè)試驅(qū)動(dòng)開發(fā)。

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-08-27 10:40:56

Java路徑

2009-12-22 09:48:58

WCF枚舉類型

2013-09-25 10:15:51

閃存存儲(chǔ)優(yōu)勢(shì)注意事項(xiàng)

2011-03-22 08:56:30

2009-12-14 10:08:03

無線路由貓

2010-11-26 16:27:01

MySQL使用變量

2011-06-24 09:23:02

SEO

2011-08-01 12:53:25

iPhone 多線程 線程

2010-01-04 15:37:41

ADO連接

2009-06-12 09:46:40

Java String

2011-07-28 17:29:22

HBaseShell

2012-03-12 16:46:22

NoSQL數(shù)據(jù)庫

2010-05-11 11:03:41

Mysql索引

2012-06-13 02:02:43

ServletJavaJSP

2012-04-10 09:53:15

2010-01-21 11:30:10

2011-05-26 11:22:04

SEO

2010-07-26 10:59:59

SQL Server游

2009-11-25 17:51:27

2010-06-21 14:39:56

光纖測(cè)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)