Java Path Relative getRelativeChildDirectory(String parent, String child)

Here you can find the source of getRelativeChildDirectory(String parent, String child)

Description

Given 2 paths, make sure parent and child are on the same tree return the port of child that not in parent

License

Apache License

Parameter

Parameter Description
parent a parameter
child a parameter

Declaration

public static String getRelativeChildDirectory(String parent,
        String child) 

Method Source Code

//package com.java2s;
/*//from w w w  . j  a  v  a 2  s .  c  o m
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.File;
import java.io.IOException;

public class Main {
    /**
     * Given 2 paths, make sure parent and child are on the same tree
     * return the port of child that not in parent
     *
     * @param parent
     * @param child
     * @return
     */
    public static String getRelativeChildDirectory(String parent,
            String child) {
        //expect parentDir contains childDir
        try {
            String childPath = new File(child).getCanonicalFile().getPath()
                    .replace('\\', '/');

            String parentPath = new File(parent).getCanonicalFile()
                    .getPath().replace('\\', '/');

            if (!childPath.startsWith(parentPath)) {
                throw new IllegalStateException();
            }

            String retDir = "." + childPath.substring(parentPath.length());

            return retDir;

        } catch (IOException e) {
            throw new IllegalStateException(
                    "Unable to convert to canonical path of either "
                            + parent + " or " + child);
        }
    }
}

Related

  1. getRelative(File base, File path)
  2. getRelative(File base, File path)
  3. getRelative(String basedir, String child)
  4. getRelativeAncestor(File ancestor, File descendant)
  5. getRelativeBaseDirectory(final File processedFile)
  6. getRelativeDirectoryPath(String in_filePath, String in_basePath)
  7. getRelativeFile(File parent, final String s2)
  8. getRelativeFile(File source, String path)
  9. getRelativeFile(File subj, File relativeTo)