Here you can find the source of getRelativeUnixPath(File baseDir, File refFile)
public static String getRelativeUnixPath(File baseDir, File refFile) throws IOException
//package com.java2s; /*/* w w w .j a v a 2s . com*/ * Copyright (C) 2014, United States Government, as represented by the * Administrator of the National Aeronautics and Space Administration. * All rights reserved. * * The Java Pathfinder core (jpf-core) platform is licensed under the * Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.io.*; public class Main { public static String getRelativeUnixPath(File baseDir, File refFile) throws IOException { String bpn = baseDir.getCanonicalPath().replace('\\', '/'); String rpn = refFile.getCanonicalPath().replace('\\', '/'); int len = Math.min(bpn.length(), rpn.length()); for (int i = 0, n = 0; i < len; i++) { char c = bpn.charAt(i); if (c == '/') { n = i + 1; } else if (c != rpn.charAt(i)) { bpn = bpn.substring(n); rpn = rpn.substring(n); break; } } len = bpn.length(); String up = ""; for (int i = 0; i < len; i++) { if (bpn.charAt(i) == '/') { up += "../"; } } String relPath = up + rpn; return relPath; } }