由绝对路径求相对路径

来源:互联网 发布:股票交易系统源码 编辑:程序博客网 时间:2024/04/29 22:31
最近公司的一个任务需要修改文件原来的绝对路径为相对路径,于是写了一个方法:
/**  * 由绝对路径获得相对路径(path2相对于path1的相对路径)  * @param path1  path1绝对路径  * @param path2  path2绝对路径  * @return 相对路径  * @throws Exception  * @author XXX  */
public String getRelativePath(String path1,String path2)throws Exception{StringBuffer RelativePath = new StringBuffer();/**替换路径中的"/"为"\"*/path1 = path1.replace("/", "\\");path2 = path2.replace("/","\\");/**将路径按"\"拆分为字符串数组*/String[] strArray1 = path1.split("\\\\"); //将path1路径拆分为数组String[] strArray2 = path2.split("\\\\");      //将path2路径拆分为数组int i = 0;/**比较两个绝对路径中相同的路径信息,并用i记录位置*/for(i = 0; i < strArray1.length && i < strArray2.length ;i ++){if(strArray1[i].equals(strArray2[i])){continue;}else{break;}}int j =i;/**如果path2路径在path1路径下,则相对路径为直接获取i后面的路径信息*/if(i == strArray1.length){for(;i<strArray2.length;i++){ RelativePath.append("\\").append(strArray2[i]);}/**如果path2路径不在path1路径下,则相对路径为先添加回退路径然后添加i后面的路径信息*/}else if(i < strArray1.length){for(;i<strArray1.length;i++){RelativePath.append("..\\");  //得到回退路径}for(;j<strArray2.length;j++){RelativePath.append(strArray2[j]).append("\\");  //得到j后面的路径信息}RelativePath = RelativePath.deleteCharAt(RelativePath.length()-1);  //去除最后的"\"符号}System.out.println("最后得到的相对路径"+RelativePath.toString());return  RelativePath.toString();  }