Mega Code Archive

 
Categories / Java / File Input Output
 

Merges the two paths to create a valid version of the second path

/*   * 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; /**  *   * FileUtils is a collection of routines for common file system operations.  *   * @author Dan Jemiolo (danj)  *   */ public final class FileUtils {   /**    *     * Merges the two paths to create a valid version of the second path. This    * method should be used when you encounter a relative path in a document and    * must resolve it based on the path of the current document. An example would    * be: <br>    * <br>    * <b>original path</b> - files/customers/Orders.xml <br>    * <br>    * <b>relative path</b> - ../Accounts.xml <br>    * <br>    * <b>result</b> - files/customers/Accounts.xml <br>    * <br>    * The only time this method cannot be used is if the original path is for a    * file that is in the root (has no directory as part of its path) and the    * relative path starts with "..".    *     * @param originalPath    *          The path of the file that references another file.    *     * @param relativePath    *          The path of the other file, which is relative to the original.    *     * @return A proper path for the other file, one that can be used to open and    *         verify the file.    *     */   public static String createRelativePath(String originalPath, String relativePath) {     if (originalPath == null)       throw new NullPointerException("NullOriginalPath");     if (relativePath == null)       throw new NullPointerException("NullRelativePath");     //     // remove ./ if present     //     if (relativePath.startsWith("./"))       relativePath = relativePath.substring(2);     //     // remove any .. reference by taking off the last section/ of     // the original path     //     if (relativePath.startsWith("../")) {       int slash = originalPath.lastIndexOf('/');       originalPath = originalPath.substring(0, slash);       relativePath = relativePath.substring(3);     }     int slash = originalPath.lastIndexOf('/');     if (slash < 0)       return relativePath;     String dir = originalPath.substring(0, slash + 1);     return dir + relativePath;   } }