123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package cn.cslg.pas.common.utils;
- import cn.cslg.pas.common.model.dto.UploadFileDTO;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.IdUtil;
- import org.springframework.boot.system.ApplicationHome;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.*;
- import java.nio.charset.StandardCharsets;
- @Service
- public class FileUtils {
- public static final String FILE_SEPARATOR = System.getProperty("file.separator");
- public static final String COMMON_FILE = "file";
- public static final String BACKUP_FILE = "backup";
- public static String getStaticPath(String fileName) {
- //ApplicationHome类 返回target目录层级
- ApplicationHome ah = new ApplicationHome(FileUtils.class);
- //获取 applicationHome 内的路径 ...\target\classes 到这一层级下
- File file = ah.getSource();
- //获取 file的parentFile 即最后一级之前的所有层级路径(包括盘符) 这里能获得到的最终层级为 ...\target 后续用FILE_SEPARATOR(系统路径分割通配符 即 "\") 以及fileName拼接生成存放文件的目录层级 即为根目录 root
- String rootPath = file.getParentFile().toString() + FILE_SEPARATOR + fileName;
- //根据上方生成的根目录路径 生成对应文件夹 没有就新建
- File root = new File(rootPath);
- if (!root.exists()) {
- root.mkdir();
- }
- //返回的最终形式为 盘符:\项目层级\target\file
- return rootPath;
- }
- public UploadFileDTO uploadFile(MultipartFile file) {
- UploadFileDTO fileDTO = new UploadFileDTO();
- //以下操作为 先取得传入文件的完整文件名 (文件名 + 后缀) 然后用FileUtil分别取出 文件名 和 不带 "." 的后缀 然后将这些内容装配进 实体中
- //file.getOriginFilename 获取源文件
- //FileUtil.getPrefix 返回主文件名
- fileDTO.setName(FileUtil.getPrefix(file.getOriginalFilename()));
- //FileUtil.extName 获取文件的扩展名(后缀名),扩展名不带 "."
- fileDTO.setExtName(FileUtil.extName(file.getOriginalFilename()));
- //获取目录名 用时间作为目录名称
- String directoryName = this.getDirectoryName();
- //用IdUtil生成的UUID 与实体中的 extName(后缀名) 拼接后作为文件名 simpleUUID与randomUUID的区别是 simpleUUID 没有 "-"
- String fileName = IdUtil.simpleUUID() + "." + fileDTO.getExtName();
- //将完整文件名进行装配
- fileDTO.setFileName(fileName);
- //生成存储文件的路径
- String savePath = this.getSavePath(directoryName);
- //根据生成存储文件的路径 生成对应文件夹 没有就新建
- File directory = new File(savePath);
- if (!directory.exists()) {
- directory.mkdir();
- }
- this.saveFile(file, savePath + fileName);
- fileDTO.setPath(FILE_SEPARATOR + directoryName + FILE_SEPARATOR + fileName);
- fileDTO.setFileSize(file.getSize());
- return fileDTO;
- }
- public String createDirectory() {
- String directoryName = this.getDirectoryName();
- String savePath = this.getSavePath(directoryName);
- File directory = new File(savePath);
- if (!directory.exists()) {
- directory.mkdir();
- }
- return directoryName;
- }
- public void saveFile(MultipartFile file, String path) {
- try {
- file.transferTo(new File(path));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public String getTempPath(String fileName) {
- String tempPath = getStaticPath(COMMON_FILE) + FILE_SEPARATOR + "temp";
- File file = new File(tempPath);
- if (!file.exists()) {
- file.mkdir();
- }
- return tempPath + FILE_SEPARATOR + fileName;
- }
- public String getSavePath(String directoryName) {
- return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + directoryName + FILE_SEPARATOR;
- }
- public String getDirectory(String fileName) {
- return FILE_SEPARATOR + this.createDirectory() + FILE_SEPARATOR + fileName;
- }
- public String getDirectory2(String directoryName) {
- return FILE_SEPARATOR + directoryName + FILE_SEPARATOR;
- }
- public String getSystemPath(String url) {
- return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + url;
- }
- public String getSystemPath() {
- return getStaticPath(COMMON_FILE);
- }
- public String getDirectoryName() {
- return DateUtils.getNowTimeFormat("yyyyMMdd");
- }
- public String getPath(String url) {
- return getStaticPath(COMMON_FILE) + url;
- }
- public String analysisJsonFile() {
- String settingFilePath = "D:\\Data\\uploadSetting.json";
- BufferedReader reader = null;
- StringBuilder last = new StringBuilder();
- InputStreamReader inputStreamReader;
- try (FileInputStream fileInputStream = new FileInputStream(settingFilePath)) {
- inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
- reader = new BufferedReader(inputStreamReader);
- String tempString;
- while ((tempString = reader.readLine()) != null) {
- last.append(tempString);
- }
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return last.toString();
- }
- }
|