lxw
2023-11-13 dfaa7760285208d7c71485372415886ba8d7c060
文件接口
2个文件已修改
1个文件已添加
133 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/FgcdFiledownloadController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/FgcdFiledownloadService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/FileUtil.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/FgcdFiledownloadController.java
@@ -40,4 +40,16 @@
    public Response cancleFileList(@RequestParam int devId){
        return service.cancleFileList(devId);
    }
    @ApiOperation(value = "读取指定设备服务器文件列表")
    @GetMapping("getDevFileName")
    public Response getDevFileName(@RequestParam int devId,@RequestParam String battName){
        return service.getDevFileName(devId,battName);
    }
    @ApiOperation(value = "判断文件是否在服务器上")
    @GetMapping("JudgeDevFileName")
    public Response JudgeDevFileName(@RequestParam int devId,@RequestParam String battName,@RequestParam String fileName){
        return service.JudgeDevFileName(devId,battName,fileName);
    }
}
src/main/java/com/whyc/service/FgcdFiledownloadService.java
@@ -7,8 +7,14 @@
import com.whyc.pojo.FgcdFiledownload;
import com.whyc.pojo.Response;
import com.whyc.util.CmdUtil;
import com.whyc.util.FileDirPath;
import com.whyc.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@Service
public class FgcdFiledownloadService {
@@ -126,4 +132,23 @@
        boolean bl=sendCmd(CmdUtil.CMD_DOLADCANCLE,0,0,null,devId);
        return new Response().set(1,bl);
    }
    //读取指定设备服务器文件列表
    public Response getDevFileName(int devId,String battName) {
        String fileDirName = FileDirPath.getFileDirName();
        String root=fileDirName+ File.separator+"FDFiles"+File.separator+devId+File.separator+battName;
        List list = new ArrayList<>();
        list= FileUtil.getStaticFilePath(new File(root),list);
        return new Response().setII(1,list!=null,list,"读取指定设备服务器文件列表");
    }
   //判断文件是否在服务器上
    public Response JudgeDevFileName(int devId, String battName, String fileName) {
        boolean bl=true;
        String fileDirName = FileDirPath.getFileDirName();
        String root=fileDirName+ File.separator+"FDFiles"+File.separator+devId+File.separator+battName+File.separator+fileName;
        File file=new File(root);
        if (file == null || !file.exists()) {
            bl=false;
        }
        return new Response().set(1,bl);
    }
}
src/main/java/com/whyc/util/FileUtil.java
New file
@@ -0,0 +1,96 @@
package com.whyc.util;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class FileUtil {
    public static List<String> getStaticFilePath(File file, List<String> list){
        //如果是文件的情况
        if (file.isFile()){
            list.add(file.getAbsolutePath());
        }else{
            //如果是目录的情况
            //创建一个File数组来存储当前目录下所有文件和目录的绝对路径
            File[] files = file.listFiles();
            //循环遍历files
            for (File fileTemp : files){
                if(fileTemp.getName().contains(".zip")){
                    continue;
                }
                //子级是目录
                if (fileTemp.isDirectory()){
                    //递归再次进行判断
                    getStaticFilePath(fileTemp, list);
                }else{
                    //子级是文件
                    String absolutePath = fileTemp.getAbsolutePath();
                    list.add(absolutePath);
                    //System.out.println(temp + "文件 :" + fileTemp.getName() + "\t");
                }
            }
        }
        return list;
    }
    public static Boolean deleteFile(File file) {
        //判断文件不为null或文件目录存在
        if (file == null || !file.exists()) {
            System.out.println("文件删除失败,请检查文件是否存在以及文件路径是否正确");
            return false;
        }
        //获取目录下子文件
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f : files) {
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()) {
                //递归删除目录下的文件
                deleteFile(f);
            } else {
                //文件删除
                f.delete();
                //打印文件名
            }
        }
        //文件夹删除
        file.delete();
        return true;
    }
    public static void download(HttpServletResponse resp,String inFilePath,String outFileFullName){
        try {
            // 转码防止乱码
            //resp.addHeader("Content-Disposition", "attachment;filename=" + new String(softwareName.getBytes("UTF-8"), "ISO8859-1"));
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode ( outFileFullName, "utf-8"));
            OutputStream out = resp.getOutputStream();
            FileInputStream in = new FileInputStream(inFilePath);
            int len=0;
            byte[] buffer =new byte[1024];
            //7. 将缓冲区中的数据输出
            while ((len=in.read(buffer))>0){
                out.write(buffer,0,len);
            }
            in.close();
            out.close();
        } catch (FileNotFoundException | UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        File file = new File("C:\\Users\\29550\\Desktop\\当前项目\\202207泰州平台");
        List list = new ArrayList<>();
        list = getStaticFilePath( file,list);
        System.out.println(list);
    }
}