package org.springblade.mdm.utils; import org.apache.commons.lang3.StringUtils; import org.springblade.core.tool.utils.FileUtil; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.Enumeration; import java.util.zip.ZipEntry; public class ZipTextFileContentUtil { public static String getTextContent(InputStream inputStream,String entryName) throws IOException { String result = ""; try(inputStream){ Path tempZipFile = createTempFile(inputStream); ZipEntry entry; try (java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(tempZipFile.toFile())) { Enumeration entries = zipFile.entries(); while (entries.hasMoreElements()) { entry = entries.nextElement(); if (!entryName.equals(entry.getName())) { continue; } try (InputStream fileIns = zipFile.getInputStream(zipFile.getEntry(entryName))) { ByteArrayInputStream bos = new ByteArrayInputStream(fileIns.readAllBytes()); boolean isText = StringUtils.endsWithIgnoreCase(entryName,".txt") || StringUtils.endsWithIgnoreCase(entryName,".nc")|| StringUtils.endsWithIgnoreCase(entryName,".xml"); if(!isText) { isText = FileContentUtil.isTextFile(bos); } if (isText) { bos.reset(); result = FileContentUtil.getContentFromStream(bos); } else { result = "<非文本文件>"; } } } } } return result; } /** * 创建一个临时i文件 * @param inputStream 输入流 * @return 文件路径 * @throws IOException */ public static Path createTempFile(InputStream inputStream) throws IOException { byte[] zipData = FileUtil.copyToByteArray(inputStream); Path tempFile = Files.createTempFile("tempzip"+System.currentTimeMillis(), ".zip"); // 写入字节数据到临时文件 Files.write(tempFile, zipData, StandardOpenOption.WRITE); return tempFile; } }