package com.ard.route.util; import java.io.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * 工具类 */ public class ToolUtils { public static Boolean isLocal = false; public static String localFilePath = "KmzFile/kmz/"; public static String kmzPath = "kmz"; /** * XML 头部 */ public static final String XML_HEADER = "\n"; /** * 生成KMZ文件名称规则 */ public static String buildKmzFileName() { // 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); return "测试KMZ文件" + "_" + now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss")); } /** * 根据路径截取文件名 */ public static String getFileNameWithoutExtension(String filePath) { if (filePath == null || filePath.trim().isEmpty()) { return ""; } // 规范化路径,处理正斜杠和反斜杠 String normalizedPath = filePath.replace('\\', '/'); // 获取文件名(含扩展名) String fileNameWithExt = normalizedPath.substring(normalizedPath.lastIndexOf('/') + 1); // 去除扩展名 int lastDotIndex = fileNameWithExt.lastIndexOf('.'); if (lastDotIndex > 0) { return fileNameWithExt.substring(0, lastDotIndex); } return fileNameWithExt; } /** * 从URL中提取文件路径部分 * @param url 完整的URL字符串 * @return 文件路径部分 */ public static String extractFilePath(String url) { if (url == null || url.isEmpty()) { return ""; } // 找到最后一个 "kmz/" 的位置,加上4以包含 "kmz/" int index = url.lastIndexOf("kmz/"); if (index != -1) { return url.substring(index + 4); // +4 跳过 "kmz/" } // 如果没有找到 "kmz/",尝试其他方式 return extractPathByDomain(url); } /** * 备选方法:通过域名后的第一个斜杠来提取 */ private static String extractPathByDomain(String url) { // 移除协议头 String withoutProtocol = url.replaceFirst("^https?://", ""); // 找到第一个斜杠位置 int slashIndex = withoutProtocol.indexOf("/"); if (slashIndex != -1) { return withoutProtocol.substring(slashIndex + 1); } return ""; } // 对象序列化为字节数组 public static byte[] serialize(Object obj) throws IOException { try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos)) { oos.writeObject(obj); return baos.toByteArray(); } } // 字节数组反序列化为对象 public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException { try (ByteArrayInputStream bais = new ByteArrayInputStream(data); ObjectInputStream ois = new ObjectInputStream(bais)) { return ois.readObject(); } } /** * 截取字符串 * 参数: https://xxx.xxx.xxx.xxx:xxx/kmz/2025/11/08/文件名_20251108152249A001.kmz */ public static String subStringMinioName(String url) { return new File(url).getName(); } /** * 截取字符串 * minio里面文件夹路径名称 */ public static String subStringMinioUrlName(String url) { int kmzIndex = url.indexOf("/kmz/"); return url.substring(kmzIndex + 5); // +5 是为了跳过 "/kmz/" } }