Java Path Relative getRelativeUnixPath(File baseDir, File refFile)

Here you can find the source of getRelativeUnixPath(File baseDir, File refFile)

Description

get Relative Unix Path

License

Open Source License

Declaration

public static String getRelativeUnixPath(File baseDir, File refFile)
            throws IOException 

Method Source Code

//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;
    }
}

Related

  1. getRelativeName(File file, File root)
  2. getRelativeName(final File directory, final File file)
  3. getRelativeName(final File file)
  4. getRelativeParentDirectory(File base, File file)
  5. getRelativeTemporaryFilename(String directory, String suffix, boolean autodelete)
  6. makeRelativePath(File from, File to)
  7. makeRelativePath(File parent, File file)
  8. makeRelativePath(IPath path, IPath relativeTo)
  9. makeRelativePathAbsolute(String relativePath)