今天朋友出了个当时他进他们公司前面试的题,他是php程序员,这题是他唯一答得上的两个算法题之一。
题目如下:
文件1路径:c:/user/edit/images/a.jsp
文件2路径: c:/user/add/user.jsp
用代码算出a.jsp和user.jsp的相对路径。
我对这题很有兴趣,于是用java做了下,功能已实现,帖出代码分享下,供初学者学习。
/**
* <p>Title: RelativeLocation.java</p>
* <p>Description: 获取指定文件相对于另一个文件的相对路径</p>
* <p>Copyright: Copyright (c) 2010</p>
* <p>Company: JAGO Software</p>
* @author DengHuaFeng
* @date 2010-5-28
* @version 1.0
*/
public class RelativeLocation{
public static void mian(String[] args) {
System.out.println(RelativeLocation.getRelativeLocation("c:/user/edit/images/a.jsp", "c:/user/add/user.jsp"));
System.out.println(RelativeLocation.getRelativeLocation("c:/user/add/user.jsp", "c:/user/edit/images/a.jsp"));
}
/**
* 获取文件2相对文件1的路径
* @param location1 文件1的绝对路径
* @param location2 文件2的绝对路径
* @return
*/
public static String getRelativeLocation(String location1,String location2){
String[] lc1=(location1.substring(location1.indexOf(":")+2)).split("/");//去除盘符 例:去除C:/
String[] lc2=(location2.substring(location2.indexOf(":")+2)).split("/");//去除盘符 例:去除C:/
String locString="";//相对路径变量声明
int start=0;//连接文件2路径的开始位置
//取得“../”的连接串
for (int i = 0; i < lc1.length; i++) {
if(i!=lc2.length){
if(!lc1[i].equals(lc2[i])){
locString="../"+locString;
if(start==0){
start=i;
}
}
}else{
locString="../"+locString;
}
}
for (int i = start+1; i < lc2.length; i++) {
locString=locString+lc2[i];
if(i+1!=lc2.length){
locString=locString+"/";
}
}
System.out.println("相对路径:"+locString);
return locString;
}
}
注:如需转载,请注明出处,以上有什么问题解答不对,欢迎交流解答!Email:denghuafeng@live.cn
分享到:
相关推荐
"获取指定目录下的文件相对路径"这个主题就是关于如何在NSIS脚本中有效地管理文件路径,以便于安装过程中的文件操作。 首先,了解相对路径的概念是至关重要的。相对路径是相对于当前工作目录或某个基点的文件或目录...
它可以是相对路径(相对于当前工作目录)或绝对路径(从根目录开始)。在Windows系统中,路径通常以驱动器字母(如C:)开头,而在Unix/Linux系统中,路径通常以正斜杠(/)开始。 - **文件名**:文件名是文件的...
绝对路径是从根目录开始到目标文件或目录的完整路径,而相对路径则相对于当前工作目录或者指定的基路径。在某些场景下,如软件部署、资源引用或者文件操作,使用相对路径可以更加灵活且节省存储空间。本篇将详细介绍...
它可以是绝对路径,从根目录开始,也可以是相对路径,相对于当前工作目录。在Windows系统中,路径通常以驱动器字母(如C:)开头,而在Unix/Linux系统中,路径通常以斜杠(/)开头。 接下来,我们需要掌握文件操作的...
相对路径则是相对于当前工作目录或指定基准点的路径。例如,`../images/logo.png`是一个相对路径,它表示从当前目录向上一级,然后进入`images`目录,最后定位到`logo.png`文件。 ### 二、Java中获取路径的方法 ##...
- **相对路径**:指的是相对于当前工作目录或类路径(Classpath)的一种路径表示方式。 - **绝对路径**:则是一种完整地指明文件位置的方式,从文件系统的根目录开始直至文件本身。 #### 相对路径的应用场景 1. **...
相对路径是相对于当前工作目录的路径,而绝对路径是从根目录开始的完整路径。在服务器端,工作目录通常是Web应用的根目录,但为了防止路径问题,通常推荐使用绝对路径,尤其是在处理文件上传或读取时。 ### 注意...
相对路径是相对于当前工作目录的路径,与绝对路径(完全指定文件或目录的位置)不同,它更灵活,方便在项目移动或部署时保持代码的可移植性。本篇将深入探讨VB中如何识别和使用相对路径。 首先,理解相对路径的基本...
- `request.getRequestURI()` 返回客户端请求的资源的相对路径(相对于当前上下文)。 - **文件的绝对路径** - 方法:`application.getRealPath(request.getRequestURI())` - 这个方法将前面得到的相对路径转换...
相对路径是指相对于当前目录的路径。在Java中获取相对路径通常有两种方式: 1. **基于当前目录**: - 使用`.`表示当前目录,例如`request.getRealPath(".")`。 - 使用`..`表示上一级目录,例如`request....
**相对路径**则是相对于某个基准目录的路径。它不包含根目录,而是以当前工作目录为基础。这种方式更加灵活,尤其是在需要将项目从一个位置移到另一个位置时更为实用。例如,如果当前工作目录为 `C:\Documents\`, ...
相对路径的一个特点是它的值会随着基准目录的变化而变化。 #### 二、JSP/Servlet中的相对路径和绝对路径 在Web开发中,尤其是在使用Java Servlet和JSP技术时,正确理解和使用相对路径和绝对路径至关重要。 ##### ...
我们可以使用 `System.IO.Path.GetFullPath()` 方法来获取相对于当前运行的可执行程序所在目录的给定的相对路径对应的绝对路径。 实践示例 例如,要显示在程序目录下的 Images/test/1.jpg 图片包含在项目中,可以...
- **相对路径**:相对于当前工作目录的位置来描述文件或目录的位置,不包含盘符信息。 #### 三、%~dp0 命令详解 在批处理脚本中,`%~dp0` 是一个非常有用的命令,它可以获取到当前批处理脚本所在的位置,并将其...
在C#中,相对于执行程序的当前工作目录来指定文件路径。如果需要使用相对路径,可以利用`AppDomain.CurrentDomain.BaseDirectory`获取到这个目录,然后拼接上相对路径: ```csharp string filePath = Path....
绝对路径是从根目录开始的完整路径,而相对路径是相对于当前工作目录的路径。在处理文件下载时,开发者需要确保提供的是正确的文件路径。对于绝对路径,它可以直接定位到文件,但可能存在安全风险,如暴露服务器结构...
在网页开发中,相对路径指的是相对于当前文件位置的路径。例如,如果当前HTML文件位于`/webpages/about.html`,那么`../images/logo.png`将指向`/webpages/images/logo.png`。相对路径的优势在于其灵活性和可移植性...
**相对路径**则是相对于当前工作目录或某个基准点来指定文件位置的方式。例如,如果当前工作目录是`C:\Projects\MyApp`,那么`Authors.mdb`就可以通过相对路径`..\Data\Authors.mdb`来访问(假设`Authors.mdb`位于`C...
1. 相对于classpath的相对路径:如在`file:/D:/java/eclipse32/workspace/jbpmtest3/bin/`这个classpath路径下的相对路径,这意味着你需要结合classpath的基路径来解析资源的实际位置。 2. 相对于当前用户目录的相对...