一、php中好像不能像asp那樣用“/”表示根目錄,代之以$_SERVER['DOCUMENT_ROOT'],其它則相同:../表示向上一層。./表示當(dāng)前層。javascript
二、dirname('__FILE__')和$_SERVER['DOCUMENT_ROOT']是表示根目錄,這個(gè)根目錄是絕對(duì)路徑,可是會(huì)隨著你的項(xiàng)目移動(dòng)而變化,因此能夠多用。這種絕對(duì)路徑D:\software\code\phpStudy2018\PHPTutorial\WWW\github\phpTest能夠少用一點(diǎn)。php
解答:不是,php中以$_SERVER['DOCUMENT_ROOT']表示跟目錄。html
解答:點(diǎn)加正斜桿,./表示當(dāng)前層。java
解答:$RootDir = $_SERVER['DOCUMENT_ROOT']; $fireDir = "$RootDir/bb/s2.txt"; 。git
解答:絕對(duì)路徑。 echo $_SERVER['DOCUMENT_ROOT'];。D:\software\code\phpStudy2018\PHPTutorial\WWW\github\phpTest。github
解答:超全局變量。web
解答:$符號(hào)(變量符號(hào))加下劃線加變量名的大寫。$_SERVER。瀏覽器
解答:上級(jí)引用,下級(jí)引用,同級(jí)引用和嵌套引用。服務(wù)器
解答:從屬引用和非從屬引用。網(wǎng)絡(luò)
解答:在同一個(gè)目錄下的引用。
解答:即不在同一個(gè)目錄下(沒有共同的父目錄,只有以網(wǎng)站目站為父目錄的狀況)。
解答:同樣,都表示為網(wǎng)站根目錄。
解答:切換當(dāng)前目錄到根目錄。
解答:dirname(__FILE__)的值和$_SERVER['DOCUMENT_ROOT']。
解答:<a href = "../../index.html">index.html</a>。
解答:絕對(duì)路徑就是你的主頁(yè)上的文件或目錄在硬盤上真正的路徑,(URL和物理路徑)例如:C:/xyz/test.txt 表明了test.txt文件的絕對(duì)路徑。。
解答:相對(duì)與某個(gè)基準(zhǔn)目錄的路徑。包含Web的相對(duì)路徑(HTML中的相對(duì)目錄)。
解答:對(duì)的。
解答:由于同級(jí)表示的是在同一個(gè)dir下,能夠直接abc.txt來訪問
解答:對(duì)的。
php中好像不能像asp那樣用“/”表示根目錄,代之以$_SERVER['DOCUMENT_ROOT'],其它則相同:../表示向上一層。./表示當(dāng)前層。假如如今a/b/c/s.php要調(diào)用根目錄下的 /bb/s2.txt,則:
$RootDir = $_SERVER['DOCUMENT_ROOT']; $fireDir = "$RootDir/bb/s2.txt"; |
或者:“../../../bb/s2.txt”表示向上返回到b再向上到a再向上到根目錄而后到bb下。
如下是實(shí)驗(yàn)圖:
當(dāng)前項(xiàng)目(project2)的絕對(duì)路徑是:D:\www\php_case\Coucom_make。也就是咱們當(dāng)前項(xiàng)目的根目錄root.
為了能更加清楚的表述不一樣級(jí)別的目錄文件相互的引入問題,偶大膽將引用分紅三種類型即:上級(jí)對(duì)下級(jí)的引用(簡(jiǎn)稱上級(jí)引用,英文譯為:superior to underling。簡(jiǎn)稱(stou)).
下級(jí)對(duì)上級(jí)的引用(簡(jiǎn)稱下級(jí)引用,英文反之即是)
平級(jí)引用或叫同級(jí)引用(英文:paratactic)?! ?/p>
好了,咱們明確了引用類型,下面咱們來看不一樣類型引用它們有著什么樣的規(guī)則。
咱們先來講說上級(jí)引用:
看咱們的實(shí)驗(yàn)圖,在圖中項(xiàng)目下分別有aa bb ee 三個(gè)同級(jí)目錄和一個(gè)index.php文件,在bb下又有cc目錄,cc下又有dd目錄和cc.php ccc.php兩個(gè)文件,一樣dd下也包含一個(gè)dd.php文件。凡是上層對(duì)下層均屬上級(jí)引用.
例如:index.php對(duì)于全部文件的引用: cc .php對(duì)dd.php的引用: ee.php對(duì)dd.php的引用: |
你們仔細(xì)看一下目錄結(jié)構(gòu),便會(huì)發(fā)現(xiàn)這三種引用雖然同屬于上級(jí)引用,但它們又不徹底相同,我把它分紅兩種狀況:即在上級(jí)引用中存在兩種引用狀況:1.從屬的上級(jí)引用(類如cc.php對(duì)dd.php,,由于這兩個(gè)文件同屬于cc目錄)2.非從屬的上級(jí)引用(類如index.php對(duì)于全部文件的引用和ee.php對(duì)dd.php的引用都屬于這種狀況由于它們與被引用的文件并無一個(gè)共同的父目錄,在能相對(duì)于站點(diǎn)根目錄).
對(duì)于從屬上級(jí)引用:
如下是在cc.php對(duì)dd.php的引用
require('dd/dd.php'); |
對(duì)于非從屬上級(jí)引用:
如下是在ee.php中對(duì)cc.php的引用
require('../bb/cc/cc.php'); |
以上所說的是上級(jí)引用,下面咱們來了解一下下級(jí)引用!
同理下層對(duì)上層的引用都屬于下級(jí)引用,一樣分紅從屬與非從屬兩類,
從屬下級(jí)引用相對(duì)路徑以它們的父目錄為根目錄,例如:
Ttt.php對(duì)bbff.php的引用就屬于這種狀況:require('../bb/cc/cc.php');
非從屬的下級(jí)引用倒是以網(wǎng)站的根目錄為準(zhǔn)的,例如:
ccc.php對(duì)ee.php的引用: require('../../ee/ee.php');
以上是下級(jí)引用的介紹,最后咱們來看一下平級(jí)引用或者叫同級(jí)引用,
其實(shí)同級(jí)引用也是分為這兩種狀況:從屬同級(jí)引與非從屬同級(jí)引用
從屬同級(jí)引用很簡(jiǎn)單:即在同一個(gè)目錄下的兩個(gè)文件的引用
例如:在dd.php中引用ttt.php require('ttt.php');
非從屬同級(jí)引用:即不在同一個(gè)目錄下(沒有共同的父目錄,只有以網(wǎng)站目站為父目錄的狀況),可是級(jí)別是相同的兩個(gè)文件的引用,例如: 在aa.php在引用ee.php require('../ee/ee.php');
以上是三種類型不一樣狀況下的引用,另外還有涉及到嵌套引用的問題
好比:
ff.php引用dd.php,而dd.php又引用的gf.php,這種狀況,原本dd.php 引用gf.php屬于下級(jí)引用中的非從屬引用,寫法是這樣的:require('../../../ee/gf.php');而ff.php引用dd.php屬于上級(jí)引用中的從屬引用,寫法是這樣的:require('./cc/dd/dd.php'); 但是你會(huì)發(fā)如今ff.php中沒法找到gf.php文件,那該如何寫呢?我告訴你應(yīng)該在dd.php中這樣寫:require('../ee/gf.php');只有這樣寫就正確了,為何呢?由于在涉及到嵌套引用的時(shí)候被引用文件的相對(duì)路徑要以最終的引用文件為準(zhǔn)!
簡(jiǎn)而言之:
其實(shí)很簡(jiǎn)單的,你用你的web根目錄作根目錄.無論你怎么定,你文件確定有一個(gè)所有都要包含的文件的,好比有的較global.php,有的較common.php
假如這個(gè)文件放再根目錄
wwwroot/global.php |
里面第一行你加個(gè)chdir(dirname(__FILE__)); //切換到global.php所在目錄就是跟目錄
其余文件使用
require "../../../global.php"; require "aa/aa.php"; require "bb/bb/cc.php"; |
這樣就好了,由于你的global.php已經(jīng)把路徑切換到wwwroot了,你不用像不少人那么麻煩
define('ROOT_PATH',dirname(__FILE__)); require ROOT_PATH..... |
chdir(dirname(__FILE__)); 的確很好使,相對(duì)位置引入這個(gè)文件其余引入文件只要以他為基準(zhǔn)就行了。
../表示源文件所在目錄的上一級(jí)目錄,../../表示源文件所在目錄的上上級(jí)目錄,以此類推。
假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html
假設(shè)index.html路徑是:c:/Inetpub/wwwroot/sites/index.html
在info.html加入index.html超連接的代碼應(yīng)該這樣寫:
<a href = "../index.html">index.html</a>
假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html
假設(shè)index.html路徑是:c:/Inetpub/wwwroot/index.html
在info.html加入index.html超連接的代碼應(yīng)該這樣寫:
<a href = "../../index.html">index.html</a>
假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html
假設(shè)index.html路徑是:c:/Inetpub/wwwroot/sites/wowstory/index.html
在info.html加入index.html超連接的代碼應(yīng)該這樣寫:
<a href = "../wowstory/index.html">index.html</a>
引用下級(jí)目錄的文件,直接寫下級(jí)目錄文件的路徑便可。
假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html
假設(shè)index.html路徑是:c:/Inetpub/wwwroot/sites/blabla/html/index.html
在info.html加入index.html超連接的代碼應(yīng)該這樣寫:
<a href = "html/index.html">index.html</a>
假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html
假設(shè)index.html路徑是:c:/Inetpub/wwwroot/sites/blabla/html/tutorials/index.html
在info.html加入index.html超連接的代碼應(yīng)該這樣寫:
<a href = "html/tutorials/index.html">index.html</a>
前一段時(shí)間,因?yàn)樵谔幚鞼eb應(yīng)用下的文件建立與移動(dòng)等,所以涉及到不少關(guān)于java
中相對(duì)路徑,絕對(duì)路徑等問題。同時(shí),對(duì)于Web應(yīng)用中的相對(duì)路徑,絕對(duì)路徑,以及Java.io.File
類學(xué)習(xí)了一下。也找了一些資料。但愿你們遇到相似的問題,能夠更有效的解決。
絕對(duì)路徑:絕對(duì)路徑就是你的主頁(yè)上的文件或目錄在硬盤上真正的路徑,(URL和物理路徑)例如:
C:/xyz/test.txt 表明了test.txt文件的絕對(duì)路徑。http://www.sun.com/index.htm也表明了一個(gè)
URL絕對(duì)路徑。
相對(duì)路徑:相對(duì)與某個(gè)基準(zhǔn)目錄的路徑。包含Web的相對(duì)路徑(HTML中的相對(duì)目錄),例如:在
Servlet中,"/"表明Web應(yīng)用的跟目錄。和物理路徑的相對(duì)表示。例如:"./" 表明當(dāng)前目錄,
"../"表明上級(jí)目錄。這種相似的表示,也是屬于相對(duì)路徑。
另外關(guān)于URI,URL,URN等內(nèi)容,請(qǐng)參考RFC相關(guān)文檔標(biāo)準(zhǔn)。
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)
服務(wù)器端的相對(duì)地址指的是相對(duì)于你的web應(yīng)用的地址,這個(gè)地址是在服務(wù)器端解析的
(不一樣于html和javascript中的相對(duì)地址,他們是由客戶端瀏覽器解析的)也就是說這時(shí)候
在jsp和servlet中的相對(duì)地址應(yīng)該是相對(duì)于你的web應(yīng)用,即相對(duì)于http://192.168.0.1/webapp/的。
其用到的地方有: 所以,通常狀況下,在JSP/HTML頁(yè)面等引用的CSS,Javascript.Action等屬性前面最好都加上 public class FileTest { System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(FileTest.class.getClassLoader().getResource("")); System.out.println(ClassLoader.getSystemResource("")); WebApplication的系統(tǒng)文件根目錄是你的weblogic安裝所在根目錄。 在yourwebapp/yourconfig/yourconf.properties, (2).Tomcat 在類中輸出System.getProperty("user.dir");顯示的是%Tomcat_Home%/bin (3).Resin 不是你的JSP放的相對(duì)路徑,是JSP引擎執(zhí)行這個(gè)JSP編譯成SERVLET (4).如何讀相對(duì)路徑哪? 在Java文件中g(shù)etResource或getResourceAsStream都可 例:getClass().getResourceAsStream(filePath);//filePath能夠是"/filename",這里的/表明web 發(fā)布根路徑下WEB-INF/classes 默認(rèn)使用該方法的路徑是:WEB-INF/classes。已經(jīng)在Tomcat中測(cè)試。 java文件操做詳解(Java中文網(wǎng)) JAVA 如何建立/刪除/修改/復(fù)制目錄及文件 參考資料: java.io.File 絕對(duì)路徑與相對(duì)路徑祥解 [『J道習(xí)練』]JSP和Servlet中的絕對(duì)路徑和相對(duì)路徑 JSP,Servlet,Class得到當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑 如何得到當(dāng)前文件路徑 經(jīng)過Spring注入機(jī)制,取得文件 配置文件的讀取 讀取配置文件,經(jīng)過虛擬路徑或相對(duì)路徑讀取一個(gè)xml文件,避免硬編碼! 經(jīng)常使用 java File 操做類 Java文件操做大全 Java文件操做詳解 解答:不是,php中以$_SERVER['DOCUMENT_ROOT']表示跟目錄。 解答:點(diǎn)加正斜桿,./表示當(dāng)前層。 解答:$RootDir = $_SERVER['DOCUMENT_ROOT']; $fireDir = "$RootDir/bb/s2.txt"; 。 解答:絕對(duì)路徑。 echo $_SERVER['DOCUMENT_ROOT'];。D:\software\code\phpStudy2018\PHPTutorial\WWW\github\phpTest。 解答:超全局變量。 解答:$符號(hào)(變量符號(hào))加下劃線加變量名的大寫。$_SERVER。 解答:上級(jí)引用,下級(jí)引用,同級(jí)引用和嵌套引用。 解答:從屬引用和非從屬引用。 解答:在同一個(gè)目錄下的引用。 解答:即不在同一個(gè)目錄下(沒有共同的父目錄,只有以網(wǎng)站目站為父目錄的狀況)。 解答:同樣,都表示為網(wǎng)站根目錄。 解答:切換當(dāng)前目錄到根目錄。 解答:dirname(__FILE__)的值和$_SERVER['DOCUMENT_ROOT']。 解答:<a href = "../../index.html">index.html</a>。 解答:絕對(duì)路徑就是你的主頁(yè)上的文件或目錄在硬盤上真正的路徑,(URL和物理路徑)例如:C:/xyz/test.txt 表明了test.txt文件的絕對(duì)路徑。。 解答:相對(duì)與某個(gè)基準(zhǔn)目錄的路徑。包含Web的相對(duì)路徑(HTML中的相對(duì)目錄)。 解答:對(duì)的。 解答:由于同級(jí)表示的是在同一個(gè)dir下,能夠直接abc.txt來訪問 解答:對(duì)的。
forward:servlet中的request.getRequestDispatcher(address);這個(gè)address是
在服務(wù)器端解析的,因此,你要forward到a.jsp應(yīng)該這么寫:
request.getRequestDispatcher(“/user/a.jsp”)這個(gè)/相對(duì)于當(dāng)前的web應(yīng)用webapp,
其絕對(duì)地址就是:
2.二、客戶端的地址
全部的html頁(yè)面中的相對(duì)地址都是相對(duì)于服務(wù)器根目錄(http://192.168.0.1/)的,
而不是(跟目錄下的該Web應(yīng)用的目錄)http://192.168.0.1/webapp/的。
Html中的form表單的action屬性的地址應(yīng)該是相對(duì)于服務(wù)器根目錄( Javascript也是在客戶端解析的,因此其相對(duì)路徑和form表單同樣。
<%=request.getContextPath()%>,以確保所引用的文件都屬于Web應(yīng)用中的目錄。
另外,應(yīng)該盡可能避免使用相似".","./","../../"等相似的相對(duì)該文件位置的相對(duì)路徑,這樣
當(dāng)文件移動(dòng)時(shí),很容易出問題。3. JSP/Servlet中得到當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑
3.1 JSP中得到當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑
根目錄所對(duì)應(yīng)的絕對(duì)路徑:request.getRequestURI()
文件的絕對(duì)路徑 :application.getRealPath(request.getRequestURI());
當(dāng)前web應(yīng)用的絕對(duì)路徑 :application.getRealPath("/");
取得請(qǐng)求文件的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()3.2 Servlet中得到當(dāng)前應(yīng)用的相對(duì)路徑和絕對(duì)路徑
根目錄所對(duì)應(yīng)的絕對(duì)路徑:request.getServletPath();
文件的絕對(duì)路徑 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
當(dāng)前web應(yīng)用的絕對(duì)路徑 :servletConfig.getServletContext().getRealPath("/");
(ServletContext對(duì)象得到幾種方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)4.java 的Class中得到相對(duì)路徑,絕對(duì)路徑的方法
4.1單獨(dú)的Java類中得到絕對(duì)路徑
根據(jù)java.io.File的Doc文擋,可知:
默認(rèn)狀況下new File("/")表明的目錄為:System.getProperty("user.dir")。
一下程序得到執(zhí)行類的當(dāng)前路徑
package org.cheng.file;
import java.io.File;
public static void main(String[] args) throws Exception {
System.out.println(FileTest.class.getResource(""));
System.out.println(FileTest.class.getResource("/")); //Class文件所在路徑
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}4.2服務(wù)器中的Java類得到當(dāng)前路徑(來自網(wǎng)絡(luò))
(1).Weblogic
例如:若是你的weblogic安裝在c:/bea/weblogic700.....
那么,你的文件根路徑就是c:/.
因此,有兩種方式可以讓你訪問你的服務(wù)器端的文件:
a.使用絕對(duì)路徑:
好比將你的參數(shù)文件放在c:/yourconfig/yourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相對(duì)路徑:
相對(duì)路徑的根目錄就是你的webapplication的根路徑,即WEB-INF的上一級(jí)目錄,將你的參數(shù)文件放
這樣使用:
new FileInputStream("./yourconfig/yourconf.properties");
這兩種方式都可,本身選擇。
的路徑為根.好比用新建文件法測(cè)試File f = new File("a.htm");
這個(gè)a.htm在resin的安裝目錄下5.讀取文件時(shí)的相對(duì)路徑,避免硬編碼和絕對(duì)路徑的使用。(來自網(wǎng)絡(luò))
5.1 采用Spring的DI機(jī)制得到文件,避免硬編碼。
參考下面的鏈接內(nèi)容:
http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的讀取
參考下面的鏈接內(nèi)容:
http://dev.csdn.net/develop/article/39/39681.shtm
5.3 經(jīng)過虛擬路徑或相對(duì)路徑讀取一個(gè)xml文件,避免硬編碼
參考下面的鏈接內(nèi)容:
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
6.Java中文件的經(jīng)常使用操做(復(fù)制,移動(dòng),刪除,建立等)(來自網(wǎng)絡(luò))
經(jīng)常使用 java File 操做類
http://www.easydone.cn/014/200604022353065155.htm
Java文件操做大全(JSP中)
http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html
http://www.51cto.com/html/2005/1108/10947.htm
http://www.gamvan.com/developer/java/2005/2/264.html總結(jié):
經(jīng)過上面內(nèi)容的使用,能夠解決在Web應(yīng)用服務(wù)器端,移動(dòng)文件,查找文件,復(fù)制
刪除文件等操做,同時(shí)對(duì)服務(wù)器的相對(duì)地址,絕對(duì)地址概念更加清晰。
建議參考URI,的RFC標(biāo)準(zhǔn)文擋。同時(shí)對(duì)Java.io.File. Java.net.URI.等內(nèi)容了解透徹
對(duì)其余方面的理解能夠更加深刻和透徹。
==================================================================================
java/docs/
java.io.InputStream
java.io.OutputStream
java.io.FileInputStream
java.io.FileReader;
java.io.FileOutputStream
java.io.FileWriter;
java.net.URI
java.net.URL
http://www.webjx.com/htmldata/2005-02-26/1109430310.html
http://w3china.org/blog/more.asp?name=pcthomas&id=9122&commentid=12376
http://cy.lzu.edu.cn/cy/club/clubPage.jsp?ccStyle=0&tID=886&ccID=77
http://www.matrix.org.cn/resource/article/44/44113_java.html
http://www.javajia.net/viewtopic.php?p=90213&
http://dev.csdn.net/develop/article/39/39681.shtm
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
http://www.easydone.cn/014/200604022353065155.htm
http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html
http://www.51cto.com/html/2005/1108/10947.htm5、測(cè)試題-簡(jiǎn)答題
一、php中用用“/”表示根目錄么?
二、什么符號(hào)表示當(dāng)前目錄(asp,jsp,php都同樣)?
三、php中如何使用$_SERVER['DOCUMENT_ROOT']作為根目錄訪問其它文件?
四、php中用$_SERVER['DOCUMENT_ROOT']作為根目錄的話那么是相對(duì)路徑仍是絕對(duì)路徑?
五、php中的$_SERVER是什么變量?
六、php中的超全局變量怎么寫?
七、php中的文件引用分為哪四種?
八、php中的每種文件引用又分為哪兩種?
九、php文件引用方式中的從屬引用是什么意思?
十、php文件引用方式中的非從屬引用是什么意思?
十一、dirname(__FILE__)的值和$_SERVER['DOCUMENT_ROOT']的值同樣么?都表示什么?
十二、php中的chdir(dirname(__FILE__)); 是什么意思?
1三、php中表示根目錄的方法是什么(兩種)?
1四、假設(shè)info.html路徑是:c:/Inetpub/wwwroot/sites/blabla/info.html;假設(shè)index.html路徑是:c:/Inetpub/wwwroot/index.html;在info.html加入index.html超連接的代碼怎么寫?
1五、絕對(duì)路徑是什么意思?
1六、相對(duì)路徑是什么意思?
1七、在Servlet中,"/"表明Web應(yīng)用的跟目錄么?
1八、同級(jí)怎么訪問?
1九、全部的文件路徑是以dir作參照而不是文件作參照,這句話對(duì)么?
聯(lián)系客服