package org.springblade.mdm.test; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.oss.OssTemplate; import org.springblade.core.oss.model.BladeFile; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.FileUtil; import org.springblade.mdm.utils.FileContentUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.*; import java.net.URI; import java.nio.file.*; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; /** * 流程管理接口 * * @author Chill */ @NonDS @RestController @RequestMapping("/test/") @AllArgsConstructor @Tag(name = "MDM系统接口", description = "引入blade-system的接口") @Slf4j public class OssTestController { private final OssTemplate ossTemplate; @GetMapping("/readzip") @ApiOperationSupport(order = 2) @Operation(summary = "读zip") public R readzip(@Parameter(description = "机构父节点id") Long deptId) throws IOException { R r = R.data(""); InputStream inputStream = new FileInputStream("d:/spd.zip"); byte[] zipData = FileUtil.copyToByteArray(inputStream); Path tempFile = Files.createTempFile("tempzip", ".zip"); // 写入字节数据到临时文件 Files.write(tempFile, zipData, StandardOpenOption.WRITE); Map env = new HashMap<>(); env.put("create", "true"); URI uri = URI.create("jar:file:/inmemory.zip"); List entryNameList = new ArrayList<>(); String entryn = "CP1-13-1/CP1-13-1-1-1-1.txt"; try (ZipFile zipFile = new ZipFile(tempFile.toFile())) { Enumeration entris = zipFile.entries(); ZipEntry entry; while(entris.hasMoreElements()) { entry = entris.nextElement(); entryNameList.add(entry.getName()); } //便利完成直接取树 entry = zipFile.getEntry(entryn); InputStream ins = zipFile.getInputStream(entry); Path outputPath = Paths.get("d:/downtest.txt"); Files.copy(ins, outputPath, StandardCopyOption.REPLACE_EXISTING); } System.out.println(entryNameList); return r; } @GetMapping("/replace") @ApiOperationSupport(order = 2) @Operation(summary = "替换内容") public R replace(String filepath) throws IOException { File file = new File(filepath); FileInputStream fis = new FileInputStream(file); InputStream newins = FileContentUtil.replaceAtLine(fis,2,"GHTEST"); BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins); return R.data(bfile.getLink()+","+bfile.getName()); } }