和和哥 發表於 2019-5-19 18:43:00

php中相对路径和绝对路径如何使用(详解)

<h1 style="text-align: center">php中相对路径和绝对路径如何使用(详解)</h1>
<h2>一、总结</h2>
<h3 class="mulu_summary">一句话总结:</h3>
<h5>1、php中好像不能像asp那样用“/”表示根目录,代之以$_SERVER['DOCUMENT_ROOT'],其它则相同:<span style="color: rgba(255, 0, 0, 1)"><strong>../表示向上一层。./表示当前层</strong></span>。</h5>
<h5>2、dirname('__FILE__')和$_SERVER['DOCUMENT_ROOT']是表示根目录,这个根目录是绝对路径,但是会随着你的项目移动而变化,所以可以多用。这种绝对路径D:\software\code\phpStudy2018\PHPTutorial\WWW\github\phpTest可以少用一点。</h5>
<p>&nbsp;</p>
<h3>1、php中用用“/”表示根目录么?</h3>
<h5>不是,php中以$_SERVER['DOCUMENT_ROOT']表示跟目录</h5>
<p>&nbsp;</p>
<h3>2、什么符号表示当前目录(asp,jsp,php都一样)?</h3>
<h5>点加正斜杆,./表示当前层</h5>
<p>&nbsp;</p>
<h3>3、php中如何使用$_SERVER['DOCUMENT_ROOT']做为根目录访问其它文件?</h3>
<h5>$RootDir =&nbsp;$_SERVER['DOCUMENT_ROOT'];&nbsp; $fireDir = "$RootDir/bb/s2.txt"; </h5>
<p>&nbsp;</p>
<h3>4、php中用$_SERVER['DOCUMENT_ROOT']做为根目录的话那么是相对路径还是绝对路径?</h3>
<h5>绝对路径。&nbsp;echo&nbsp;$_SERVER['DOCUMENT_ROOT'];。D:\software\code\phpStudy2018\PHPTutorial\WWW\github\phpTest</h5>
<p>&nbsp;</p>
<h3>5、php中的$_SERVER是什么变量?</h3>
<h5>超全局变量</h5>
<p>&nbsp;</p>
<h3>6、php中的超全局变量怎么写?</h3>
<h5>$符号(变量符号)加下划线加变量名的大写。$_SERVER</h5>
<p>&nbsp;</p>
<h3>7、php中的文件引用分为哪四种?</h3>
<h5>上级引用,下级引用,同级引用和嵌套引用</h5>
<p>&nbsp;</p>
<h3>8、php中的每种文件引用又分为哪两种?</h3>
<h5>从属引用和非从属引用</h5>
<p>&nbsp;</p>
<h3>9、php文件引用方式中的从属引用是什么意思?</h3>
<h5>在同一个目录下的引用</h5>
<p>&nbsp;</p>
<h3>10、php文件引用方式中的非从属引用是什么意思?</h3>
<h5>即不在同一个目录下(没有共同的父目录,只有以网站目站为父目录的情况)</h5>
<p>&nbsp;</p>
<h3>11、dirname(__FILE__)的值和$_SERVER['DOCUMENT_ROOT']的值一样么?都表示什么?</h3>
<h5>一样,都表示为网站根目录</h5>
<p>&nbsp;</p>
<h3>12、php中的chdir(dirname(__FILE__)); 是什么意思?</h3>
<h5>切换当前目录到根目录</h5>
<p>&nbsp;</p>
<h3>13、php中表示根目录的方法是什么(两种)?</h3>
<h5>dirname(__FILE__)的值和<span>$_SERVER['DOCUMENT_ROOT']</span></h5>
<p>&nbsp;</p>
<h3>14、假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html;假设index.html路径是:c:/Inetpub/wwwroot/index.html;在info.html加入index.html超链接的代码怎么写?</h3>
<h5>a href = "../../index.html"&gt;index.html&lt;/a</h5>
<p>&nbsp;</p>
<h3>15、绝对路径是什么意思?</h3>
<h5>绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:/xyz/test.txt&nbsp;代表了test.txt文件的绝对路径</h5>
<p>&nbsp;</p>
<h3>16、相对路径是什么意思?</h3>
<h5>相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录)</h5>
<p>&nbsp;</p>
<h3>17、在Servlet中,"/"代表Web应用的跟目录么?</h3>
<h5>对的</h5>
<p>&nbsp;</p>
<h3>18、同级怎么访问?</h3>
<h5>因为同级表示的是在同一个dir下,可以直接abc.txt来访问</h5>
<p>&nbsp;</p>
<h3>19、所有的文件路径是以dir做参照而不是文件做参照,这句话对么?</h3>
<h5>对的</h5>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>二、php绝对路径与相对路径之间关系的的深入研究</h2>
<h3>1、简述</h3>
<p>php中好像不能像<span style="background-color: rgba(255, 255, 0, 1)">asp那样用“/”表示根目录</span>,代之<span style="background-color: rgba(255, 255, 0, 1)">以$_SERVER['DOCUMENT_ROOT']</span>,其它则相同:<span style="background-color: rgba(255, 255, 0, 1)">../表示向上一层</span>。<span style="background-color: rgba(255, 255, 0, 1)">./表示当前层</span>。假如现在a/b/c/s.php要调用根目录下的 /bb/s2.txt,则:</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">$RootDir =<span style="background-color: rgba(255, 255, 0, 1)"> $_SERVER['DOCUMENT_ROOT'];</span>&nbsp;<br>$fireDir = "$RootDir/bb/s2.txt";</td>
















</tr>
















</tbody>
















</table>
<p>或者:“<span style="background-color: rgba(255, 255, 0, 1)">../../../bb/s2.txt</span>”表示向上返回到b再向上到a再向上到根目录然后到bb下。</p>
<p>&nbsp;</p>
<p>以下是实验图:</p>
<p align="center"><img src="https://images2018.cnblogs.com/blog/1163900/201806/1163900-20180605113612278-1849318452.png" alt=""></p>
<p>&nbsp;</p>
<p>当前项目(project2)的绝对路径是:D:\www\php_case\Coucom_make。也就是我们当前项目的根目录root.<br>  <br>为了能更加清楚的表述不同级别的目录文件相互的引入问题,偶大胆将引用分成三种类型即:<span style="background-color: rgba(255, 255, 0, 1)">上级对下级的引用</span>(简称上级引用,英文译为:superior to underling。简称(stou)).</p>
<p><span style="background-color: rgba(255, 255, 0, 1)">下级对上级的引用</span>(简称下级引用,英文反之便是)</p>
<p><span style="background-color: rgba(255, 255, 0, 1)">平级引用或叫同级引用</span>(英文:paratactic)。  </p>
<h3>2、上级引用</h3>
<p>好了,我们明确了引用类型,下面我们来看不同类型引用它们有着什么样的规则。</p>
<p>我们先来说说上级引用:</p>
<p>看我们的实验图,在图中项目下分别有aa bb ee 三个同级目录和一个index.php文件,在bb下又有cc目录,cc下又有dd目录和cc.php ccc.php两个文件,同样dd下也包含一个dd.php文件。凡是上层对下层均属上级引用.</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">例如:index.php对于所有文件的引用:&nbsp;<br>   cc .php对dd.php的引用:&nbsp;<br>   ee.php对dd.php的引用:</td>
















</tr>
















</tbody>
















</table>
<p>大家仔细看一下目录结构,便会发现这三种引用虽然同属于上级引用,但它们又不完全相同,我把它分成两种情况:即在上级引用中存在两种引用情况:1.<span style="background-color: rgba(255, 255, 0, 1)">从属的上级引用(类如cc.php对dd.php,,因为这两个文件同属于cc目录)</span>2.<span style="background-color: rgba(255, 255, 0, 1)">非从属的上级引用</span>(类如index.php对于所有文件的引用和ee.php对dd.php的引用都属于这种情况因为它们与被引用的文件并没有一个共同的父目录,在能相对于站点根目录).</p>
<h5>从属上级引用:</h5>
<p>对于<span style="background-color: rgba(255, 255, 0, 1)">从属上级引用</span>:</p>
<p>以下是在cc.php对dd.php的引用</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">require(<span style="background-color: rgba(255, 255, 0, 1)">'dd/dd.php');</span></td>
















</tr>
















</tbody>
















</table>
<h5>非从属上级引用:</h5>
<p>对于<span style="background-color: rgba(255, 255, 0, 1)">非从属上级引用</span>:</p>
<p>以下是在ee.php中对cc.php的引用</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">require('<span style="background-color: rgba(255, 255, 0, 1)">../bb/cc/cc.php</span>');</td>
















</tr>
















</tbody>
















</table>
<p>以上所说的是上级引用,下面我们来了解一下下级引用!</p>
<h3>3、下级引用</h3>
<p>同理下层对上层的引用都属于下级引用,同样分成从属与非从属两类,</p>
<h5>从属下级引用</h5>
<p>从属下级引用相对路径以它们的父目录为根目录,例如:</p>
<p>Ttt.php对bbff.php的引用就属于这种情况:require('../bb/cc/cc.php');</p>
<h5>非从属的下级引用</h5>
<p>非从属的下级引用却是<span style="background-color: rgba(255, 255, 0, 1)">以网站的根目录为准</span>的,例如:</p>
<p>ccc.php对ee.php的引用: require('<span style="background-color: rgba(255, 255, 0, 1)">../../ee/ee.php</span>');</p>
<p>以上是下级引用的介绍,最后我们来看一下平级引用或者叫同级引用,</p>
<h3>4、同级引用</h3>
<p>其实同级引用也是分为这两种情况:从属同级引与非从属同级引用</p>
<h5>从属同级引用</h5>
<p>从属同级引用很简单:即在同一个目录下的两个文件的引用</p>
<p>例如:在dd.php中引用ttt.php require('<span style="background-color: rgba(255, 255, 0, 1)">ttt.php</span>');</p>
<h5>非从属同级引用</h5>
<p><span style="background-color: rgba(255, 255, 0, 1)">非从属同级引用</span>:即不在同一个目录下(没有共同的父目录,<span style="background-color: rgba(255, 255, 0, 1)">只有以网站目站为父目录的情况</span>),但是级别是相同的两个文件的引用,例如: 在aa.php在引用ee.php&nbsp;&nbsp; require('<span style="background-color: rgba(255, 255, 0, 1)">../ee/ee.php</span>');</p>
<p>以上是三种类型不同情况下的引用,另外还有涉及到嵌套引用的问题</p>
<h3>5、嵌套引用的问题</h3>
<p>比如:</p>
<p>ff.php引用dd.php,而dd.php又引用的gf.php,这种情况,本来dd.php 引用gf.php属于下级引用中的非从属引用,写法是这样的:require('../../../ee/gf.php');而ff.php引用dd.php属于上级引用中的从属引用,写法是这样的:require('<span style="background-color: rgba(255, 255, 0, 1)">./</span>cc/dd/dd.php'); 可是你会发现在ff.php中<span style="background-color: rgba(255, 255, 0, 1)">无法找到gf.php文件</span>,那该如何写呢?我告诉你应该在dd.php中这样写:<span style="background-color: rgba(255, 255, 0, 1)">require('../ee/gf.php')</span>;只有这样写就正确了,为什么呢?因为在<span style="background-color: rgba(255, 255, 0, 1)">涉及到嵌套引用的时候被引用文件的相对路径要以最终的引用文件为准</span>!</p>
<p>简而言之:</p>
<p>其实很简单的,你<span style="background-color: rgba(255, 255, 0, 1)">用你的web根目录做根目录</span>.不管你怎么定,你文件肯定有一个全部都要包含的文件的,比如有的较global.php,有的较common.php</p>
<p>假如这个文件放再根目录</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">wwwroot/global.php</td>
















</tr>
















</tbody>
















</table>
<p>里面第一行你加个<span style="background-color: rgba(255, 255, 0, 1)">chdir(dirname(__FILE__));</span> //切换到global.php所在目录就是跟目录</p>
<p>其他文件使用</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb">require "../../../global.php";&nbsp;<br>require "aa/aa.php";&nbsp;<br>require "bb/bb/cc.php";</td>
















</tr>
















</tbody>
















</table>
<p>这样就行了,因为<span style="background-color: rgba(255, 255, 0, 1)">你的global.php已经把路径切换到wwwroot了</span>,你不用像很多人那么麻烦</p>
<p>&nbsp;</p>
<table style="width: 95%" border="0" cellspacing="0" cellpadding="6" align="center">
<tbody>
<tr>
<td bgcolor="#ddedfb"><span style="background-color: rgba(255, 255, 0, 1)">define('ROOT_PATH',dirname(__FILE__));&nbsp;</span><br><span style="background-color: rgba(255, 255, 0, 1)">require ROOT_PATH.....</span></td>
















</tr>
















</tbody>
















</table>
<p><span style="background-color: rgba(255, 255, 0, 1)">chdir(dirname(__FILE__)); 的确很好使</span>,相对位置引入这个文件其他引入文件只要以他为基准就好了。</p>
<p>&nbsp;</p>
<h2>三、HTML相对路径--上级目录及下级目录的写法</h2>
<h3>1、如何表示上级目录</h3>
<p><span style="background-color: rgba(255, 255, 0, 1)">../表示源文件所在目录的上一级目录</span>,<span style="background-color: rgba(255, 255, 0, 1)">../../</span>表示源文件所在目录的上上级目录,以此类推。</p>
<p>假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html<br>假设index.html路径是:c:/Inetpub/wwwroot/sites/index.html<br>在info.html加入index.html超链接的代码应该这样写:</p>
<pre>&lt;a href = "<span style="background-color: rgba(255, 255, 0, 1)">../index.html</span>"&gt;index.html&lt;/a&gt;</pre>
<p>&nbsp;</p>
<p>假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html<br>假设index.html路径是:c:/Inetpub/wwwroot/index.html<br>在info.html加入index.html超链接的代码应该这样写:</p>
<pre>&lt;a href = "../../index.html"&gt;index.html&lt;/a&gt;</pre>
<p>&nbsp;</p>
<p>假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html<br>假设index.html路径是:c:/Inetpub/wwwroot/sites/wowstory/index.html<br>在info.html加入index.html超链接的代码应该这样写:</p>
<pre>&lt;a href = "../wowstory/index.html"&gt;index.html&lt;/a&gt;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<pre></pre>
<p>&nbsp;</p>
<h3>2、如何表示下级目录</h3>
<p>引用下级目录的文件,直接写下级目录文件的路径即可。</p>
<p>假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html<br>假设index.html路径是:c:/Inetpub/wwwroot/sites/blabla/html/index.html<br>在info.html加入index.html超链接的代码应该这样写:</p>
<pre>&lt;a href = "<span style="background-color: rgba(255, 255, 0, 1)">html/index.html</span>"&gt;index.html&lt;/a&gt;</pre>
<p>&nbsp;</p>
<p>假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html<br>假设index.html路径是:c:/Inetpub/wwwroot/sites/blabla/html/tutorials/index.html<br>在info.html加入index.html超链接的代码应该这样写:</p>
<pre>&lt;a href = "<span style="background-color: rgba(255, 255, 0, 1)">html/tutorials/index.html</span>"&gt;index.html&lt;/a&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>四、java(Web)中相对路径,绝对路径问题总结</h2>
<h3>前言:</h3>
<p><br>&nbsp;前一段时间,由于在处理Web应用下的文件创建与移动等,因此涉及到很多关于java<br>中相对路径,绝对路径等问题。同时,对于Web应用中的相对路径,绝对路径,以及Java.io.File<br>类学习了一下。也找了一些资料。希望大家遇到类似的问题,可以更有效的解决。</p>
<p>&nbsp;</p>
<h3>1.基本概念的理解</h3>
<p>&nbsp;</p>
<p>  绝对路径:绝对路径就是你的主页上的文<span style="background-color: rgba(255, 255, 0, 1)">件或目录在硬盘上真正的路径</span>,(URL和物理路径)例如:<br>C:/xyz/test.txt&nbsp;代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个<br>URL绝对路径。</p>
<p>  相对路径:<span style="background-color: rgba(255, 255, 0, 1)">相对与某个基准目录的路径</span>。包含Web的相对路径(HTML中的相对目录),例如:在<br>Servlet中,<span style="background-color: rgba(255, 255, 0, 1)">"/"代表Web应用的跟目录</span>。和物理路径的相对表示。例如:<span style="background-color: rgba(255, 255, 0, 1)">"./" 代表当前目录</span>,<br><span style="background-color: rgba(255, 255, 0, 1)">"../"代表上级目录</span>。这种类似的表示,也是属于相对路径。</p>
<p>另外关于URI,URL,URN等内容,请参考RFC相关文档标准。</p>
<p>RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,&nbsp;<br>(http://www.ietf.org/rfc/rfc2396.txt)</p>
<p>&nbsp;</p>
<h3>2.关于JSP/Servlet中的相对路径和绝对路径。</h3>
<p>&nbsp;</p>
<h4>2.1服务器端的地址</h4>
<p>  &nbsp;服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的<br>(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候<br>在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。</p>
<p>  其用到的地方有:&nbsp;<br>&nbsp;forward:servlet中的request.getRequestDispatcher(address);这个address是<br>在服务器端解析的,所以,你要forward到a.jsp应该这么写:<br>request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,<br>其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。&nbsp;<br>sendRedirect:在jsp中&lt;%response.sendRedirect("/rtccp/user/a.jsp");%&gt;</p>
<p>&nbsp;</p>
<h4>2.2、客户端的地址&nbsp;&nbsp;</h4>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的,<br>而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。&nbsp;<br>&nbsp;Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,<br>所以,如果提交到a.jsp为:action="/webapp/user/a.jsp"或action="&lt;%=request.getContextPath()%&gt;"/user/a.jsp;<br>  提交到servlet为actiom="/webapp/handleservlet" &nbsp;<br>&nbsp;  Javascript也是在客户端解析的,所以其相对路径和form表单一样。&nbsp;<br>&nbsp;</p>
<p>  因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上<br>&lt;%=request.getContextPath()%&gt;,以确保所引用的文件都属于Web应用中的目录。<br>另外,<span style="background-color: rgba(255, 255, 0, 1)">应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径,这样</span><br><span style="background-color: rgba(255, 255, 0, 1)">当文件移动时,很容易出问题</span>。</p>
<p>&nbsp;</p>
<h3>3. JSP/Servlet中获得当前应用的相对路径和绝对路径</h3>
<h4><br>3.1 JSP中获得当前应用的相对路径和绝对路径</h4>
<p><br>&nbsp;根目录所对应的绝对路径:request.getRequestURI()<br>&nbsp;文件的绝对路径&nbsp;&nbsp;&nbsp;  :application.getRealPath(request.getRequestURI());<br>&nbsp;当前web应用的绝对路径 :application.getRealPath("/");<br>&nbsp;取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()</p>
<p>&nbsp;</p>
<h4>3.2 Servlet中获得当前应用的相对路径和绝对路径</h4>
<p><br>&nbsp;根目录所对应的绝对路径:request.getServletPath();<br>&nbsp;文件的绝对路径&nbsp;&nbsp;&nbsp; :request.getSession().getServletContext().getRealPath<br>(request.getRequestURI())&nbsp;&nbsp;&nbsp;<br>&nbsp;当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ServletContext对象获得几种方式:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.http.HttpSession.getServletContext()&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.jsp.PageContext.getServletContext()&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.ServletConfig.getServletContext()&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</p>
<p>&nbsp;</p>
<h3>4.java 的Class中获得相对路径,绝对路径的方法</h3>
<h4><br>4.1单独的Java类中获得绝对路径</h4>
<p><br>  根据java.io.File的Doc文挡,可知:<br>&nbsp;默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。<br>&nbsp;一下程序获得执行类的当前路径<br>package org.cheng.file;<br>import java.io.File;</p>
<p>public class FileTest {<br>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;System.out.println(FileTest.class.getClassLoader().getResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>  System.out.println(ClassLoader.getSystemResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;System.out.println(FileTest.class.getResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;System.out.println(FileTest.class.getResource("/")); //Class文件所在路径&nbsp;&nbsp;<br>&nbsp;&nbsp;System.out.println(new File("/").getAbsolutePath());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;System.out.println(System.getProperty("user.dir"));&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}<br>}</p>
<p>&nbsp;</p>
<h4>4.2服务器中的Java类获得当前路径(来自网络)</h4>
<p><br>(1).Weblogic</p>
<p>WebApplication的系统文件根目录是你的weblogic安装所在根目录。<br>例如:如果你的weblogic安装在c:/bea/weblogic700.....<br>那么,你的文件根路径就是c:/.<br>所以,有两种方式能够让你访问你的服务器端的文件:<br>a.使用绝对路径:<br>比如将你的参数文件放在c:/yourconfig/yourconf.properties,<br>直接使用 new FileInputStream("yourconfig/yourconf.properties");<br>b.使用相对路径:<br>相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放</p>
<p>在yourwebapp/yourconfig/yourconf.properties,<br>这样使用:<br>new FileInputStream("./yourconfig/yourconf.properties");<br>这两种方式均可,自己选择。</p>
<p>(2).Tomcat</p>
<p>在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin</p>
<p>(3).Resin</p>
<p>不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET<br>的路径为根.比如用新建文件法测试File f = new File("a.htm");<br>这个a.htm在resin的安装目录下</p>
<p>(4).如何读相对路径哪?</p>
<p>在Java文件中getResource或getResourceAsStream均可</p>
<p>例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web</p>
<p>发布根路径下WEB-INF/classes</p>
<p>默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。</p>
<p>&nbsp;</p>
<h3>5.读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)</h3>
<p><br>5.1 采用Spring的DI机制获得文件,避免硬编码。<br>&nbsp; &nbsp;参考下面的连接内容:<br>&nbsp; &nbsp;http://www.javajia.net/viewtopic.php?p=90213&amp;<br>5.2 配置文件的读取<br>&nbsp;参考下面的连接内容:<br>&nbsp;http://dev.csdn.net/develop/article/39/39681.shtm<br>5.3 通过虚拟路径或相对路径读取一个xml文件,避免硬编码<br>&nbsp;参考下面的连接内容:<br>&nbsp;http://club.gamvan.com/club/clubPage.jsp?iPage=1&amp;tID=10708&amp;ccID=8<br>&nbsp;</p>
<h3><br>6.Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)</h3>
<p><br>&nbsp;常用 java File 操作类&nbsp;<br>&nbsp;http://www.easydone.cn/014/200604022353065155.htm<br>&nbsp;<br>&nbsp;Java文件操作大全(JSP中)<br>&nbsp;http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html</p>
<p>&nbsp;java文件操作详解(Java中文网)<br>&nbsp;http://www.51cto.com/html/2005/1108/10947.htm</p>
<p>&nbsp;JAVA 如何创建/删除/修改/复制目录及文件<br>&nbsp;http://www.gamvan.com/developer/java/2005/2/264.html</p>
<p>&nbsp;</p>
<h3>总结:</h3>
<p><br>&nbsp;通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制<br>&nbsp;删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。<br>建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻<br>对其他方面的理解可以更加深入和透彻。<br>==================================================================================</p>
<p>参考资料:<br>java/docs/</p>
<p>java.io.File<br>java.io.InputStream<br>java.io.OutputStream<br>java.io.FileInputStream<br>java.io.FileReader;<br>java.io.FileOutputStream<br>java.io.FileWriter;<br>java.net.URI<br>java.net.URL</p>
<p>绝对路径与相对路径祥解<br>http://www.webjx.com/htmldata/2005-02-26/1109430310.html</p>
<p>[『J道习练』]JSP和Servlet中的绝对路径和相对路径<br>http://w3china.org/blog/more.asp?name=pcthomas&amp;id=9122&amp;commentid=12376</p>
<p>JSP,Servlet,Class获得当前应用的相对路径和绝对路径<br>http://cy.lzu.edu.cn/cy/club/clubPage.jsp?ccStyle=0&amp;tID=886&amp;ccID=77</p>
<p>如何获得当前文件路径<br>http://www.matrix.org.cn/resource/article/44/44113_java.html</p>
<p>通过Spring注入机制,取得文件<br>http://www.javajia.net/viewtopic.php?p=90213&amp;</p>
<p>配置文件的读取&nbsp;<br>http://dev.csdn.net/develop/article/39/39681.shtm</p>
<p>读取配置文件,通过虚拟路径或相对路径读取一个xml文件,避免硬编码!&nbsp;<br>http://club.gamvan.com/club/clubPage.jsp?iPage=1&amp;tID=10708&amp;ccID=8</p>
<p>常用 java File 操作类<br>http://www.easydone.cn/014/200604022353065155.htm</p>
<p>Java文件操作大全<br>http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html</p>
<p>Java文件操作详解<br>http://www.51cto.com/html/2005/1108/10947.htm</p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <div id="fry_added_part">
    <div class="fry_website">
      <div class="fry_website" style="color:#3c8dbc;padding: 10px 0;display:none;">
            我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站:
            【读书编程笔记】fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
      </div>
      <div class="copyright" style="color: red;padding-bottom: 10px;">
            版权申明:欢迎转载,但请注明出处
            <div style="font-size: 12px">一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。</div>
      </div>
      <div id="fry_know_friends" style="color: red;padding-bottom: 10px;font-size: 22px;">
            <div style="display:none;"></div>
            <div style="display:none;">在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。</div>
            <div style="display:none;">2025-04-30:宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308</div>
      </div>
      <div class="copyright" style="color: green;padding-bottom: 10px;">
            录播课资料github地址:https://github.com/fry404006308/fry_course_materials
      </div>
      <div style="display:none;"></div>
    </div>
    <div class="fry_tech_group" style="color: mediumpurple;">
      <div>
            AI交流资料群:753014672
      </div>
    </div>
    <div class="fry_recommend">
      <h2>作者相关推荐</h2>
      <div id="fry_recommend" style="padding-bottom: 40px">
      </div>
    </div>
    <style>
      #fry_added_part .inspiration_content{
            //max-height: 120px;
            overflow: auto;
            margin: 20px 0;
      }
      #fry_added_part .fry_inspiration .simple a{
            margin-right: 25px;
      }
    </style>
    <div style="display:none;" class="fry_inspiration">
      <div style="color: red;font-size: 20px;text-align: center;" class="title">
            感悟总结
      </div>
      <!--分为详细部分和简略部分-->
      <!--详细部分-->
      <div class="detail">
            <div class="url_set">
                <div style="display: none;" class="per_url" href="https://www.cnblogs.com/Renyi-Fan/p/13498246.html"></div>
                <!--<div style="display: none;" class="per_url" href="https://www.cnblogs.com/Renyi-Fan/p/14379366.html"></div>-->
                <!--<div style="display: none;" class="per_url" href="https://www.cnblogs.com/Renyi-Fan/p/14154624.html"></div>-->
            </div>
            <div class="content_set"></div>
      </div>
      <!--简略部分-->
      <div style="display: none;" class="simple">
            <div style="color: #FF9966;margin-bottom: 10px;">其它重要感悟总结</div>
            <div>
                感悟总结200813
                最近心境200830
                最近心境201019
                201218-210205
            </div>
      </div>
    </div>
</div><br><br>
来源:https://www.cnblogs.com/Renyi-Fan/p/10890220.html
頁: [1]
查看完整版本: php中相对路径和绝对路径如何使用(详解)