天天看點

Java中路徑的擷取總結以及URL和URI的差別

先描述一下資源的位置:我在src下建了一個cn.config的包,裡面有config.xml這個檔案。來看這一段代碼

package cn.test;

import java.net.urisyntaxexception;

import java.net.url;

public class pathtest

{

 public static void geturl()

 {

  url url = pathtest.class.getclassloader().getresource("");

  system.out.println(url);

 }

 public static void geturl2()

  url url = pathtest.class.getclassloader().getresource("cn/config/config.xml");

 public static void geturi() throws urisyntaxexception

  string uri = pathtest.class.getclassloader().getresource("cn/config/config.xml").getpath();

  system.out.println(uri);

 public static void main(string[] args) throws urisyntaxexception

  geturl();

  geturl2();

  geturi();

}

對于java項目的結果

file:/e:/mydir/pathtest/bin/

file:/e:/mydir/pathtest/bin/cn/config/config.xml

/e:/mydir/pathtest/bin/cn/config/config.xml

bin檔案夾中放的是.java被編譯後的.class檔案,若是普通檔案就按照路徑自動拷貝的bin檔案夾下,類加載器在加載.class的時候把普通檔案也一起加載了。web項目也是同樣的道理,隻是檔案夾不同。

對于web項目的結果

file:/e:/mydir/pathtest_web/webroot/web-inf/classes/

file:/e:/mydir/pathtest_web/webroot/web-inf/classes/cn/config/config.xml

/e:/mydir/pathtest_web/webroot/web-inf/classes/cn/config/config.xml

對于servlet,action取到項目裡的路徑和上面一樣,如何取到在伺服器的值呢?比如在tomcat裡面的值呢?

string path = servletactioncontext.getservletcontext().getrealpath("/");

那麼uri和url有什麼差別呢?

uri—universal resource identifier通用資源标志符

web上可用的每種資源如html文檔、圖像、視訊片段、程式等都是一個來uri來定位的

uri一般由三部組成

①通路資源的命名機制

②存放資源的主機名

③資源自身的名稱,由路徑表示,着重強調于資源。

url—uniform resource location統一資源定位符

url是internet上用來描述資訊資源的字元串,主要用在各種www客戶程式和伺服器程式上,特别是著名的mosaic。

采用url可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的位址和目錄等。

url一般由三部組成

①協定(或稱為服務方式)

②存有該資源的主機ip位址(有時也包括端口号)

③主機資源的具體位址。如目錄和檔案名等