Merges the two paths to create a valid version of the second path : Path « File « Java Tutorial






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

}








11.3.Path
11.3.1.Construct file path
11.3.2.Absolute path and relative path
11.3.3.File Objects: specifies a path for a file or a directory
11.3.4.Using double slash to escape
11.3.5.Using the second constructor: C:/jdk1.5.0/src/java/io
11.3.6.Portable Path Considerations
11.3.7.Absolute and Relative Paths
11.3.8.Build a relative path to the given base path
11.3.9.Get relative path
11.3.10.Universal Naming Convention
11.3.11.Filtered Directory Tree
11.3.12.Compare two file paths
11.3.13.Getting an Absolute Filename Path from a Relative Filename Path
11.3.14.Getting an Absolute Filename Path from a Relative Filename with Path
11.3.15.Getting an Absolute Filename Path from a Relative Filename parent Path
11.3.16.Convert a list of path elements to a platform-specific path.
11.3.17.Match a path which may contain a wildcard
11.3.18.Merges the two paths to create a valid version of the second path
11.3.19.Return the page type extracting it from the path
11.3.20.Display directory tree
11.3.21.Get file separator using System class
11.3.22.Determining If Two Filename Paths Refer to the Same File
11.3.23.Convert a file path into a File object with an absolute path relative to a passed in root.
11.3.24.Remove file information from a filename returning only its path component
11.3.25.Remove path information from a filename returning only its file component
11.3.26.Strip a filename of its last extension (the portion immediately following the last dot character, if any)
11.3.27.Remove path and file information from a filename returning only its extension component
11.3.28.Return a file with the given filename creating the necessary directories if not present.
11.3.29.Build a path- but do not create it