content extc classpath 標示符 current loader p s strong zh-cn

記得在操作系統中了解到文件讀取有兩種方式,當然這在各編程語言中也是通用的,所以java路徑也分,相對和絕對路徑。

絕對路徑

絕對路徑URI ,聽著和URL非常相似。那我們就來看看吧。

URI(Uniformresource Identifier)統一資源標示符.URL統一資源定位符,是一個定位器,還說明了詳細怎樣找到資源.所以他們就有一種抽象和繼承的關系。URI抽象的說明了統一資源表示符號,而URL是詳細的標識符的方式.

怎樣使用呢。

如我們想獲取一個類的詳細位置。僅僅要例如以下方式:

比如:test.class.GetResouce("");

假設中間加了"/"test.class.GetResouce("/");獲取的就是該java類的跟文件夾了。

兩者是不同的。

技術分享

相對路徑

一般是相對於某一絕對路徑的,我們常使用的是相對於ClassPath

如:使用ClassLoader類的getResouce()等方法。得到的是當前classPath相對路徑。

 URL ds=Thread.currentThread().getContextClassLoader().getResource("");
System.out.print(ds+"\n");
System.out.print(ClassLoader.getSystemResource(""));

兩種結果是同樣的.

技術分享

若要讀取內容,直接使用字節流文件

InputStream in=ClassLoader.getSystemResourceAsStream(""beanx-config.xml"");

ClassLoader是類載入器,能夠指定載入特殊資源.上圖中為何同樣呢.原因在於Thread.currentThread()設定了當前的 ClassLoader.他們都指定默認的路徑.所以兩者路徑同樣.

整體認識:

URL是一種詳細的URI,它不僅唯一標識資源,並且還提供了定位該資源的信息。URI是一種語義上的抽象概念,能夠是絕對的,也能夠是相對的。而URL則必須提供足夠的信息來定位。所以,是絕對的,而通常說的relative URL,則是針對還有一個absolute URL,本質上還是絕對的.


Java 文件路徑的讀取