excludeFileName) {
+ this.excludeFileName = excludeFileName;
+ return this;
+ }
+}
diff --git a/src/main/java/com/yexuejc/base/pojo/PagerVO.java b/src/main/java/com/yexuejc/base/pojo/PagerVO.java
index e23aeda..bf441e4 100644
--- a/src/main/java/com/yexuejc/base/pojo/PagerVO.java
+++ b/src/main/java/com/yexuejc/base/pojo/PagerVO.java
@@ -4,7 +4,6 @@ import com.yexuejc.base.util.JsonUtil;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
-
/**
* 分页 VO
*
diff --git a/src/main/java/com/yexuejc/base/util/FileUtil.java b/src/main/java/com/yexuejc/base/util/FileUtil.java
index 956f528..f0d351e 100644
--- a/src/main/java/com/yexuejc/base/util/FileUtil.java
+++ b/src/main/java/com/yexuejc/base/util/FileUtil.java
@@ -10,12 +10,27 @@ import com.yexuejc.base.pojo.ReadFileBean;
import io.jsonwebtoken.lang.Assert;
import org.apache.commons.io.IOUtils;
-import java.io.*;
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.RandomAccessFile;
+import java.io.Reader;
+import java.io.StringWriter;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
@@ -159,7 +174,6 @@ public class FileUtil {
return null;
}
-
/***
* 计算SHA1码
*
@@ -303,41 +317,24 @@ public class FileUtil {
* @return
*/
public static String base64ToStr(File file) {
- return new String(base64(file));
- }
-
- /**
- * 获取文件base64
- *
- * @param file
- * @return
- */
- public static byte[] base64(File file) {
- FileInputStream fileInputStream = null;
- byte[] data = null;
- // 读取图片字节数组
try {
- fileInputStream = new FileInputStream(file);
- data = new byte[fileInputStream.available()];
- fileInputStream.read(data);
- fileInputStream.close();
+ byte[] bytes = Files.readAllBytes(Path.of(file.getPath()));
+ return Base64.getEncoder().encodeToString(bytes);
} catch (IOException e) {
logger.severe("The operation file is an IO exception.");
- e.printStackTrace();
}
- // 对字节数组Base64编码
- return Base64.getEncoder().encode(data);
+ return null;
}
/**
* base64转文件
*
*
- * 文件转base64请使用 {@link FileUtil#base64(File)}
+ * 文件转base64请使用 {@link FileUtil#base64ToStr(File)}
*
*
* @param decode {@link FileUtil#base64ToStr(File)} 的结果
- * @param fileName 文件名称(包含路径)
+ * @param fileName 保存文件名称(包含路径)
* @return 返回保存地址
*/
public static String base64ToFile(String decode, String fileName) {
@@ -348,7 +345,7 @@ public class FileUtil {
* base64转文件
*
*
- * 文件转base64请使用 {@link FileUtil#base64(File)}
+ * 文件转base64请使用 {@link FileUtil#base64ToStr(File)}
*
*
* @param decode baseByte
@@ -553,7 +550,6 @@ public class FileUtil {
return new String(result, charset);
}
-
/**
* 提供读取IO流方法合集
*
读取速度快慢顺序:
@@ -614,7 +610,6 @@ public class FileUtil {
.collect(Collectors.joining(lineSeparator == null ? System.lineSeparator() : lineSeparator));
}
-
/**
* 读取IO流内容:Scanner A方式
*
@@ -637,7 +632,6 @@ public class FileUtil {
return new Scanner(inputStream).useDelimiter("\\Z").next();
}
-
/**
* 读取IO流内容:StringBuilder方式
*
@@ -741,6 +735,7 @@ public class FileUtil {
}
}
+
/*public static void main(String[] args) {
long size = FileUtil.size(new File("E:\\OS\\deepin-15.6-amd64\\DeepinCloudPrintServerInstaller_1.0.0.1.exe"));
System.out.println(size);
diff --git a/src/main/java/com/yexuejc/base/util/ZipUtil.java b/src/main/java/com/yexuejc/base/util/ZipUtil.java
new file mode 100644
index 0000000..34df27a
--- /dev/null
+++ b/src/main/java/com/yexuejc/base/util/ZipUtil.java
@@ -0,0 +1,65 @@
+package com.yexuejc.base.util;
+
+import com.yexuejc.base.pojo.CreateZipFileBean;
+import net.lingala.zip4j.ZipFile;
+import net.lingala.zip4j.exception.ZipException;
+import net.lingala.zip4j.model.ExcludeFileFilter;
+import net.lingala.zip4j.model.ZipParameters;
+import net.lingala.zip4j.model.enums.CompressionMethod;
+import net.lingala.zip4j.model.enums.EncryptionMethod;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 压缩相关
+ * 依赖于zip4j:https://github.com/srikanth-lingala/zip4j
+ *
+ * @author maxf
+ * @class-name ZipUtil
+ * @description 文件压缩
+ * @date 2022/11/11 11:09
+ */
+public class ZipUtil {
+
+ /**
+ * 创建压缩文件
+ *
+ * @param zipFileBean
+ */
+ public static void createZipFile(CreateZipFileBean zipFileBean) throws ZipException {
+ ZipParameters zipParameters = new ZipParameters();
+ zipParameters.setCompressionMethod(CompressionMethod.STORE);
+
+ //加密
+ zipParameters.setEncryptFiles(true);
+ zipParameters.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);
+ ZipFile zipFile = new ZipFile(zipFileBean.getZipFile());
+ if (StrUtil.isNotEmpty(zipFileBean.getEncryptPwd())) {
+ zipFile = new ZipFile(zipFileBean.getZipFile(), zipFileBean.getEncryptPwd().toCharArray());
+ }
+ if (StrUtil.isNotEmpty(zipFileBean.getSourceFileName())) {
+ //压缩文件
+ List filesToAdd = new ArrayList<>(16);
+ Map fileNamesMap = new HashMap<>(16);
+ zipFileBean.getSourceFileName().forEach(it -> {
+ String file = zipFileBean.getSourcePath() + File.separator + it;
+ filesToAdd.add(new File(file));
+ fileNamesMap.put(file, it);
+ });
+ zipFile.renameFiles(fileNamesMap);
+ zipFile.addFiles(filesToAdd, zipParameters);
+ } else {
+ //压缩目录
+ ExcludeFileFilter excludeFileFilter = zipFileBean.getExcludeFileName()::contains;
+ zipParameters.setExcludeFileFilter(excludeFileFilter);
+ zipFile.addFolder(new File(zipFileBean.getSourcePath()), zipParameters);
+ }
+ }
+}
+
+//checkemun key -> codeMst检索(缓存)
+//返回exception(message用区分分割文言和exp)
\ No newline at end of file