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<? extends ZipEntry> 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;
|
}
|
}
|