¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.core.tool.utils; |
| | | |
| | | import org.springframework.lang.Nullable; |
| | | |
| | | import java.io.File; |
| | | import java.net.URL; |
| | | |
| | | /** |
| | | * ç¨æ¥è·ååç§ç®å½ |
| | | * |
| | | * @author L.cm |
| | | */ |
| | | public class PathUtil { |
| | | public static final String FILE_PROTOCOL = "file"; |
| | | public static final String JAR_PROTOCOL = "jar"; |
| | | public static final String ZIP_PROTOCOL = "zip"; |
| | | public static final String FILE_PROTOCOL_PREFIX = "file:"; |
| | | public static final String JAR_FILE_SEPARATOR = "!/"; |
| | | |
| | | /** |
| | | * è·åjarå
è¿è¡æ¶çå½åç®å½ |
| | | * |
| | | * @return {String} |
| | | */ |
| | | @Nullable |
| | | public static String getJarPath() { |
| | | try { |
| | | URL url = PathUtil.class.getResource(StringPool.SLASH).toURI().toURL(); |
| | | return PathUtil.toFilePath(url); |
| | | } catch (Exception e) { |
| | | String path = PathUtil.class.getResource(StringPool.EMPTY).getPath(); |
| | | return new File(path).getParentFile().getParentFile().getAbsolutePath(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 转æ¢ä¸ºæä»¶è·¯å¾ |
| | | * |
| | | * @param url è·¯å¾ |
| | | * @return {String} |
| | | */ |
| | | @Nullable |
| | | public static String toFilePath(@Nullable URL url) { |
| | | if (url == null) { |
| | | return null; |
| | | } |
| | | String protocol = url.getProtocol(); |
| | | String file = UrlUtil.decode(url.getPath(), Charsets.UTF_8); |
| | | if (FILE_PROTOCOL.equals(protocol)) { |
| | | return new File(file).getParentFile().getParentFile().getAbsolutePath(); |
| | | } else if (JAR_PROTOCOL.equals(protocol) || ZIP_PROTOCOL.equals(protocol)) { |
| | | int ipos = file.indexOf(JAR_FILE_SEPARATOR); |
| | | if (ipos > 0) { |
| | | file = file.substring(0, ipos); |
| | | } |
| | | if (file.startsWith(FILE_PROTOCOL_PREFIX)) { |
| | | file = file.substring(FILE_PROTOCOL_PREFIX.length()); |
| | | } |
| | | return new File(file).getParentFile().getAbsolutePath(); |
| | | } |
| | | return file; |
| | | } |
| | | |
| | | } |