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