Java:下载文件/获取文件所在路径

前言

下载文件工具类,提供Java查看下载文件所在目录方法,如何获取resource目录下文件,查看WAR包文件路径

链接

URL链接下载
java:URLConnection后台下载文件&设置代理

本地下载

工具类

     public void downloadTemplate(String fileName, HttpServletResponse response) {
        if (StringUtils.isEmpty(fileName)) {
            fileName = "./template/微信发送模板.xlsx";
        }
        log.info(fileName);
        File file = new File(fileName);
        try {
            if (!file.exists()) {
                response.sendError(404, "File not found!");
                return;
            }
            InputStream fis = new BufferedInputStream(new FileInputStream(fileName));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(file.getName().getBytes("UTF-8"), "iso8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            //编码
            response.setCharacterEncoding("UTF-8");
            OutputStream out = new BufferedOutputStream(response.getOutputStream());
            out.write(buffer);

            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

获取文件路径

2025-07-18更新
上次更新2021-03-09
使用war包部署,获取本地路径文件,发现获取不到,使用程序获取路径
吉晨*Maven 项目打成 war 包后, resources 文件夹 的实际路径

// D:\IDEASoft\apache-tomcat-8.5.57\bin
log.info(System.getProperty("user.dir"));
//获取当前程序所在路径file:/D:/IDEASoft/apache-tomcat-8.5.57/webapps/zhjjxt_001_war/WEB-INF/classes/
log.info(  getClass().getResource("/").toString());

通过此路径可以看到文件在resource路径时,打包在classes路径下,如果在resource/file打包则可能没有,注意打包扫描文件路径!

875c6ef1ec7a6c19d5cf758c73fc410
image

获取文件

       //获取文件流 知道了路径获取此文件的方式则按照正常获取即可
       String  fileName= "/酒店模板.xlsx";
       InputStream fis = getClass().getResourceAsStream(fileName);
       if (fis==null) {
                return ERROR;
          }
       byte[] buffer = new byte[fis.available()];
       fis.read(buffer);
       fis.close();
       //输出
       ByteArrayOutputStream out = new ByteArrayOutputStream();
       out.write(buffer);
       out.flush();
       out.close();
posted @ 2025-07-18 11:35  HezhezhiyuLe  阅读(11)  评论(0)    收藏  举报