问题描述: 写一个函数怎么把相对路径转化为绝对路径(还是绝对路径转化为相对路径)?
问题分析: 这里面的绝对路径可以是网络上的链接路径,也可以是本地绝对路径。
例如:strWeb = "http://456.e.now.cn/";
innerURL = "../share/style.css";
拼接后的绝对路径为:http://456.e.now.cn/share/style.css
再例如:
strLocal = "C:/Users/lenovo/Desktop/";
innerURL="../share/style.css";
拼接后的路径为:C:/Users/lenovo/Desktop/share/style.css
下面我们将分别写代码来实现:
代码实现:
1、如果在web请求中出现这个问题的话,这个比较简单:
String strRealPath = getServletContext().getRealPath(String strVirtualPath);
2、在非web请求中,我们可以这样做:
package com.yonyou.test; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; /** * 测试类 * @author 小浩 * @创建日期 2015-4-18 */ public class Test{ public static void main(String[] args) throws MalformedURLException, URISyntaxException{ new Test().test(); } /** * @throws URISyntaxException * @throws MalformedURLException */ public void test() throws URISyntaxException, MalformedURLException{ //1、获取网络上面的绝对URL URI base=new URI("http://456.e.now.cn/test/");//基本网页URI URI abs=base.resolve("../share/style.css");//解析于上述网页的相对URL,得到绝对URI URL absURL=abs.toURL();//转成URL System.out.println("网络上面的URL的绝对路径为:"+absURL); //2、获取本地的绝对URL String absURL2=System.getProperty("user.dir")+ "../share/style.css".substring(2, "../share/style.css".length()); String absURL3=System.getProperty("user.dir")+"/"+ "../../share/style.css".replaceAll("\.\./",""); //此处需要把"../"转义为"\.\./" System.out.println("本地的绝对路径为:"+absURL2); System.out.println("本地的绝对路径为:"+absURL3); }}