/*
* Copyright 2015-2025 the original author or authors.
*
* 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.
*/
package sockslib.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;
/**
* The class <code>PathUtil</code> represents a path utility.
*
* @author Youchao Feng
* @version 1.0
* @since 1.0
*/
public class PathUtil {
/**
* Returns abstract path.
*
* @param path the path that can start with "classpath:" or "file:".
* @return abstract path.
* @throws FileNotFoundException if the file not found.
*/
public static String getAbstractPath(String path) throws FileNotFoundException {
if (path != null && path.startsWith("classpath:")) {
String classPathValue = path.split(":")[1];
if (!classPathValue.startsWith(File.separator)) {
classPathValue = File.separator + classPathValue;
}
URL url = PathUtil.class.getResource(classPathValue);
if (url == null) {
throw new FileNotFoundException(path);
}
return url.getPath();
} else if (path != null && path.startsWith("file:")) {
if (path.length() > 6) {
return path.substring(5);
}
}
return path;
}
}