package org.jeecg.modules.doc.vo; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.doc.exception.QiwenException; import org.jeecg.modules.doc.util.UFOPUtils; /** * @author MAC * @version 1.0 * @description: TODO * @date 2022/4/21 12:08 */ public class QiwenFile { private final String path; public static final String separator = "/"; private boolean isDirectory; public QiwenFile(String pathname, boolean isDirectory) { if (StringUtils.isEmpty(pathname)) { throw new QiwenException("file name format error,pathname:" + pathname); } this.path = formatPath(pathname); this.isDirectory = isDirectory; } public QiwenFile(String parent, String child, boolean isDirectory) { if (StringUtils.isEmpty(child)) { throw new QiwenException("file name format error,parent:" + parent +", child:" + child); } if (parent != null) { String parentPath = separator.equals(formatPath(parent)) ? "" : formatPath(parent); String childPath = formatPath(child); if (childPath.startsWith(separator)) { childPath = childPath.replaceFirst(separator, ""); } this.path = parentPath + separator + childPath; } else { this.path = formatPath(child); } this.isDirectory = isDirectory; } public static String formatPath(String path) { path = UFOPUtils.pathSplitFormat(path); if ("/".equals(path)) { return path; } if (path.endsWith("/")) { int length = path.length(); return path.substring(0, length - 1); } return path; } public String getParent() { if (separator.equals(this.path)) { return null; } if (!this.path.contains("/")) { return null; } int index = path.lastIndexOf(separator); if (index == 0) { return separator; } return path.substring(0, index); } public QiwenFile getParentFile() { String parentPath = this.getParent(); return new QiwenFile(parentPath, true); } public String getName() { int index = path.lastIndexOf(separator); if (!path.contains(separator)) { return path; } return path.substring(index + 1); } public String getExtendName() { if (isDirectory) { return null; } return FilenameUtils.getExtension(getName()); } public String getNameNotExtend() { if (isDirectory) { return getName(); } else { return FilenameUtils.removeExtension(getName()); } } public String getPath() { return path; } public boolean isDirectory() { return isDirectory; } public boolean isFile() { return !isDirectory; } }