龙空技术网

SpringBoot 新建多层级文件目录 + 获取目录下所有文件[复用]

陈圣杰 189

前言:

此时兄弟们对“java获取目录下的所有文件名”可能比较着重,姐妹们都需要剖析一些“java获取目录下的所有文件名”的相关知识。那么小编在网络上收集了一些有关“java获取目录下的所有文件名””的相关文章,希望咱们能喜欢,兄弟们快快来学习一下吧!

依赖

import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import java.util.*;

新建多层级文件目录 + 文件上传

public ResultData upload(MultipartFile file, String path) {    if (file.isEmpty()) {        return ResultData.error(10006, "文件为空!");    }    String fileDirStr = pre + path;    File fileDir = new File(fileDirStr);    if (!fileDir.exists()) { //判断文件父目录是否存在        fileDir.mkdirs();//所有目录创建    }  String originalFilename = file.getOriginalFilename();    File localFile = new File(fileDirStr, originalFilename);    try {        file.transferTo(localFile);        return ResultData.success(fileDirStr + originalFilename, "上传成功");    } catch (Exception e) {        return ResultData.error(e.getMessage(), "上传失败");    }}

获取目录下所有文件

public List<String> getFileList(String filepath) {    List<String> list = new ArrayList<>();    File folder = new File(pre + filepath);    File[] files = folder.listFiles();    for (File file : files) {        System.out.println(file.getName());        list.add(pre + filepath + "/" + file.getName());        if (file.isDirectory()) {            System.out.println(file.getPath());            break;        }    }    return list;}

文件浏览器下载

public void download(String path, HttpServletResponse response) {    try {        // path是指想要下载的文件的路径        File file = new File(pre + path);        log.info(file.getPath());        // 获取文件名        String filename = file.getName();        // 获取文件后缀名        String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();        // 将文件写入输入流        FileInputStream fileInputStream = new FileInputStream(file);        InputStream fis = new BufferedInputStream(fileInputStream);        byte[] buffer = new byte[fis.available()];        fis.read(buffer);        fis.close();        // 清空response        response.reset();        // 设置response的Header        response.setCharacterEncoding("UTF-8");        //Content-Disposition的作用:告知浏览器以何种方式显示响应返回的文件,用浏览器打开还是以附件的形式下载到本地保存        //attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"        // filename表示文件的默认名称,因为网络传输只支持URL编码的相关支付,因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));        // 告知浏览器文件的大小        response.addHeader("Content-Length", "" + file.length());        OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());        response.setContentType("application/octet-stream");        outputStream.write(buffer);        outputStream.flush();    } catch (IOException ex) {        ex.printStackTrace();    }}

标签: #java获取目录下的所有文件名