From 38f29e38fcc668171dc05c53d40a36b895c86102 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期四, 10 十月 2024 13:34:28 +0800
Subject: [PATCH] init
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java | 218 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 129 insertions(+), 89 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
index b9bc834..db8797d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -9,8 +9,16 @@
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.time.LocalDate;
+import java.time.ZoneId;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.config.ARDConfig;
@@ -21,44 +29,35 @@
/**
* 鏂囦欢澶勭悊宸ュ叿绫�
- *
+ *
* @author ruoyi
*/
-public class FileUtils
-{
+public class FileUtils {
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
/**
* 杈撳嚭鎸囧畾鏂囦欢鐨刡yte鏁扮粍
- *
+ *
* @param filePath 鏂囦欢璺緞
- * @param os 杈撳嚭娴�
+ * @param os 杈撳嚭娴�
* @return
*/
- public static void writeBytes(String filePath, OutputStream os) throws IOException
- {
+ public static void writeBytes(String filePath, OutputStream os) throws IOException {
FileInputStream fis = null;
- try
- {
+ try {
File file = new File(filePath);
- if (!file.exists())
- {
+ if (!file.exists()) {
throw new FileNotFoundException(filePath);
}
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int length;
- while ((length = fis.read(b)) > 0)
- {
+ while ((length = fis.read(b)) > 0) {
os.write(b, 0, length);
}
- }
- catch (IOException e)
- {
+ } catch (IOException e) {
throw e;
- }
- finally
- {
+ } finally {
IOUtils.close(os);
IOUtils.close(fis);
}
@@ -71,33 +70,28 @@
* @return 鐩爣鏂囦欢
* @throws IOException IO寮傚父
*/
- public static String writeImportBytes(byte[] data) throws IOException
- {
+ public static String writeImportBytes(byte[] data) throws IOException {
return writeBytes(data, ARDConfig.getImportPath());
}
/**
* 鍐欐暟鎹埌鏂囦欢涓�
*
- * @param data 鏁版嵁
+ * @param data 鏁版嵁
* @param uploadDir 鐩爣鏂囦欢
* @return 鐩爣鏂囦欢
* @throws IOException IO寮傚父
*/
- public static String writeBytes(byte[] data, String uploadDir) throws IOException
- {
+ public static String writeBytes(byte[] data, String uploadDir) throws IOException {
FileOutputStream fos = null;
String pathName = "";
- try
- {
+ try {
String extension = getFileExtendName(data);
pathName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
File file = FileUploadUtils.getAbsoluteFile(uploadDir, pathName);
fos = new FileOutputStream(file);
fos.write(data);
- }
- finally
- {
+ } finally {
IOUtils.close(fos);
}
return FileUploadUtils.getPathFileName(uploadDir, pathName);
@@ -105,50 +99,61 @@
/**
* 鍒犻櫎鏂囦欢
- *
+ *
* @param filePath 鏂囦欢
* @return
*/
- public static boolean deleteFile(String filePath)
- {
+ public static boolean deleteFile(String filePath) {
boolean flag = false;
File file = new File(filePath);
// 璺緞涓烘枃浠朵笖涓嶄负绌哄垯杩涜鍒犻櫎
- if (file.isFile() && file.exists())
- {
+ if (file.isFile() && file.exists()) {
flag = file.delete();
}
return flag;
}
-
+ /**
+ * 鍒犻櫎鏂囦欢澶�
+ *
+ * @param filePath 鏂囦欢澶�
+ * @return
+ */
+ public static void deleteFolder(String filePath) {
+ File folder=new File(filePath);
+ if (folder.isDirectory()) {
+ File[] files = folder.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ deleteFolder(file.getAbsolutePath());
+ }
+ }
+ }
+ folder.delete();
+ }
/**
* 鏂囦欢鍚嶇О楠岃瘉
- *
+ *
* @param filename 鏂囦欢鍚嶇О
* @return true 姝e父 false 闈炴硶
*/
- public static boolean isValidFilename(String filename)
- {
+ public static boolean isValidFilename(String filename) {
return filename.matches(FILENAME_PATTERN);
}
/**
* 妫�鏌ユ枃浠舵槸鍚﹀彲涓嬭浇
- *
+ *
* @param resource 闇�瑕佷笅杞界殑鏂囦欢
* @return true 姝e父 false 闈炴硶
*/
- public static boolean checkAllowDownload(String resource)
- {
+ public static boolean checkAllowDownload(String resource) {
// 绂佹鐩綍涓婅烦绾у埆
- if (StringUtils.contains(resource, ".."))
- {
+ if (StringUtils.contains(resource, "..")) {
return false;
}
// 妫�鏌ュ厑璁镐笅杞界殑鏂囦欢瑙勫垯
- if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)))
- {
+ if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource))) {
return true;
}
@@ -158,33 +163,25 @@
/**
* 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮�
- *
- * @param request 璇锋眰瀵硅薄
+ *
+ * @param request 璇锋眰瀵硅薄
* @param fileName 鏂囦欢鍚�
* @return 缂栫爜鍚庣殑鏂囦欢鍚�
*/
- public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
- {
+ public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException {
final String agent = request.getHeader("USER-AGENT");
String filename = fileName;
- if (agent.contains("MSIE"))
- {
+ if (agent.contains("MSIE")) {
// IE娴忚鍣�
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
- }
- else if (agent.contains("Firefox"))
- {
+ } else if (agent.contains("Firefox")) {
// 鐏嫄娴忚鍣�
filename = new String(fileName.getBytes(), "ISO8859-1");
- }
- else if (agent.contains("Chrome"))
- {
+ } else if (agent.contains("Chrome")) {
// google娴忚鍣�
filename = URLEncoder.encode(filename, "utf-8");
- }
- else
- {
+ } else {
// 鍏跺畠娴忚鍣�
filename = URLEncoder.encode(filename, "utf-8");
}
@@ -194,11 +191,10 @@
/**
* 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮�
*
- * @param response 鍝嶅簲瀵硅薄
+ * @param response 鍝嶅簲瀵硅薄
* @param realFileName 鐪熷疄鏂囦欢鍚�
*/
- public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
- {
+ public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException {
String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder();
@@ -220,36 +216,27 @@
* @param s 闇�瑕佺櫨鍒嗗彿缂栫爜鐨勫瓧绗︿覆
* @return 鐧惧垎鍙风紪鐮佸悗鐨勫瓧绗︿覆
*/
- public static String percentEncode(String s) throws UnsupportedEncodingException
- {
+ public static String percentEncode(String s) throws UnsupportedEncodingException {
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
/**
* 鑾峰彇鍥惧儚鍚庣紑
- *
+ *
* @param photoByte 鍥惧儚鏁版嵁
* @return 鍚庣紑鍚�
*/
- public static String getFileExtendName(byte[] photoByte)
- {
+ public static String getFileExtendName(byte[] photoByte) {
String strFileExtendName = "jpg";
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
- && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
- {
+ && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) {
strFileExtendName = "gif";
- }
- else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
- {
+ } else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) {
strFileExtendName = "jpg";
- }
- else if ((photoByte[0] == 66) && (photoByte[1] == 77))
- {
+ } else if ((photoByte[0] == 66) && (photoByte[1] == 77)) {
strFileExtendName = "bmp";
- }
- else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
- {
+ } else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) {
strFileExtendName = "png";
}
return strFileExtendName;
@@ -257,14 +244,12 @@
/**
* 鑾峰彇鏂囦欢鍚嶇О /profile/upload/2022/04/16/ruoyi.png -- ruoyi.png
- *
+ *
* @param fileName 璺緞鍚嶇О
* @return 娌℃湁鏂囦欢璺緞鐨勫悕绉�
*/
- public static String getName(String fileName)
- {
- if (fileName == null)
- {
+ public static String getName(String fileName) {
+ if (fileName == null) {
return null;
}
int lastUnixPos = fileName.lastIndexOf('/');
@@ -275,17 +260,72 @@
/**
* 鑾峰彇涓嶅甫鍚庣紑鏂囦欢鍚嶇О /profile/upload/2022/04/16/ruoyi.png -- ruoyi
- *
+ *
* @param fileName 璺緞鍚嶇О
* @return 娌℃湁鏂囦欢璺緞鍜屽悗缂�鐨勫悕绉�
*/
- public static String getNameNotSuffix(String fileName)
- {
- if (fileName == null)
- {
+ public static String getNameNotSuffix(String fileName) {
+ if (fileName == null) {
return null;
}
String baseName = FilenameUtils.getBaseName(fileName);
return baseName;
}
+
+ /**
+ * 鍒涘缓涓�涓枃浠惰幏鍙栨枃浠惰矾寰�
+ *
+ * @param fileName 璺緞鍚嶇О
+ * @return 鏂囦欢璺緞鍜屽悗缂�鐨勫悕绉�
+ */
+ public static String createFile(String fileName) {
+ try {
+ File file = new File(fileName);
+ if (!file.exists()) {
+ File fileParent = file.getParentFile();
+ if (!fileParent.exists()) {
+ fileParent.mkdirs();
+ }
+ file.createNewFile();
+ }
+ return file.getCanonicalPath();
+
+ } catch (Exception ex) {
+ return "";
+ }
+ }
+
+ /**
+ * @Author 鍒樿嫃涔�
+ * @Description 鍒犻櫎浠婂ぉ涔嬪墠鐨勬枃浠�
+ * @Date 2024/6/21 8:42
+ * @Param
+ * @return
+ */
+ public static void deleteNonTodayFiles(Path folderPath) {
+ try {
+ Files.walkFileTree(folderPath, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ LocalDate fileDate = attrs.creationTime().toInstant()
+ .atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate today = LocalDate.now();
+
+ if (!fileDate.equals(today)) {
+ Files.delete(file);
+ System.out.println("Deleted: " + file.toString());
+ }
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
+ System.err.println("Failed to access file: " + file.toString());
+ return FileVisitResult.CONTINUE;
+ }
+ });
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
--
Gitblit v1.9.3