package com.cloud.mina.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletResponse;

/***

 * 下载文件工具类

 */

public class DownLoadUtil {

    private static final String CONTENT_TYPE = "application/x-msdownload";

    /**

     * 下载文件

     * @param response HttpServletResponse

     * @param title 下载时候的文件名称

     * @param file 要下载的文件对象

     * @return true 下载成功    false 下载失败

     */

    public static boolean downLoadFile(HttpServletResponse response,String filename,File file){

        boolean result = true;

        FileInputStream input = null;

        OutputStream out = null;

        try {

            //设置response的编码方式

            response.setContentType(CONTENT_TYPE);

            //写明要下载的文件的大小

            response.setContentLength((int)file.length());

            //设置附加文件名

            response.setHeader("Content-Disposition","attachment;filename=\""+new String

                    (filename.getBytes("UTF-8"),"iso-8859-1")+"\"");

            //读出文件到i/o流

            input =new FileInputStream(file);

            //从response对象中得到输出流,准备下载

            out = response.getOutputStream();

            if(input!=null && out!=null){    // 判断输入或输出是否准备好

                int temp = 0 ;    

                try{

                    while((temp=input.read())!=-1){    // 开始拷贝

                        out.write(temp) ;    // 边读边写

                    }

                }catch(IOException e){

                    e.printStackTrace() ;

                    result = false;

                }

            }

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

            result = false;

        } catch (IOException e) {

            result = false;

            e.printStackTrace();

        } finally{

            if(input!=null){

                try {

                    input.close();

                } catch (IOException e) {

                    e.printStackTrace();

                    result = false; 

                }

            }

            if(out!=null){

                try {

                    out.flush();

                    out.close();//关闭输出流

                } catch (IOException e) {

                    e.printStackTrace();

                    result = false; 

                }

            }

            

        }

        return result;

    }

}

原文地址;https://blog.csdn.net/qxqxqzzz/article/details/97008529

文件下载工具类 DownLoadUtil 实战的更多相关文章

  1. Java 文件下载工具类

    Java 文件下载工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = ...

  2. C# 文件下载工具类FileDownHelper

    using System; using System.IO; using System.Threading; using System.Web; namespace 落地页测试代码 { public ...

  3. JavaWeb响应下载(包含工具类)

    纸上得来终觉浅,绝知此事要躬行!今天博主分享是关于javaweb的响应(response)下载 以下是我的Demo: 页面我就粘主要部分的代码 <a href = "${pageCon ...

  4. (转载)项目实战工具类(一):PhoneUtil(手机信息相关)

    项目实战工具类(一):PhoneUtil(手机信息相关)   可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...

  5. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战

    笔记 4.Redis工具类封装讲解和实战     简介:高效开发方式 Redis工具类封装讲解和实战         1.常用客户端 https://redisdesktop.com/download ...

  6. 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

    获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ...

  7. 项目实战工具类(一):PhoneUtil(手机信息相关)

    可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6.获取手机sim卡 ...

  8. java的Arrays工具类实战

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.静态方法是属于类的,不是属于类的对象.所以可以直接使用类名加方法名进行调用.Arrays作为一个工具类,能很好的操作数组 ...

  9. 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式

    上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ...

随机推荐

  1. matlab-变量类型-数组-矩阵

    1 变量类型 1.1基本 1.2 特殊变量 ans •i,j: complex number •Inf: 无穷大 •eps: 2.2204e-016 •NaN: not a number •pi:pa ...

  2. springcloud 使用RabbitMq

    新建一个项目,三个module 分别为eureka-server,config-server,config-client, eureka-server 的pom.xml, <?xml versi ...

  3. Fiilter

    过滤器 过滤请求和响应 作用:        自动登录.        统一编码.        过滤关键字        .... Filter是一个接口 编写filter步骤: 1.编写一个类 a ...

  4. PAT甲级——A1051 Pop Sequence

    Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...

  5. 【DM642学习笔记十】DSP优化记录

    1. 处理的数据先EDMA到片内,具有更高的效率! 以YUV2RGB为例: #pragma DATA_SECTION(onchipBuf0_y,".INTPROCBUFF"); # ...

  6. 浅谈Python小数据池

    什么是小数据池 小数据池是python中提高效率的一种方式,固定数据类型的相同值使用同一内存地址. id 用于获取开辟空间的内存地址 代码块 一个文件,一个模块,一个函数,一个类,终端中的每一行代码都 ...

  7. HDFS写数据的过程

  8. php用mysql方式连接数据库出现Deprecated报错

    以上是用php5.5 连接mysql数据库时报的错. 于是我用php5.4 连接正常没有报错. 这与mysql版本无关系,php 5.x版本,如5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器 ...

  9. 小希的迷宫 HDU - 1272 (并查集)

    思路: 当图中的集合(连通子图)个数为1并且边数等于顶点数-1(即改图恰好为一棵生成树)时,输出Yes. 此题的坑:(1) 如果只输入0 0算作一组数据的话答案应该输出Yes (2) 输入数据可能并不 ...

  10. tesseract ocr训练 pt验证码

    识别率有问题A大概率识别为n,因此需要训练,这里讲一下 如何训练 参考 java代码里边直接使用tess4j,是对tesseract的封装,但是如果要训练,还是需要在进行安装tesseract-ocr ...