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. kafka一些问题点的分析

    kakfka架构图: 理解kafka需要理解三个问题. 1.producer,broker,consumer,ZK的工作模式. broker,ZK是作为一个后台服务,而producer和consume ...

  2. leetcode 75 Sorted Colors

    两种解法 1)记录0和1的个数 然后按照记录的个数将0和1重新放入原数组,剩下的补2 2)双指针left,right left表示0~left-1都为0,即i之前都为0 right表示right+1~ ...

  3. css-文本两行或多行文本溢出显示省略号(转)

    转自:http://www.daqianduan.com/6179.html  感谢作者 1.单行文本的溢出显示省略号 overflow: hidden; text-overflow:ellipsis ...

  4. 廖雪峰Java11多线程编程-1线程的概念-5中断线程

    1.中断线程: 如果线程需要执行一个长时间任务,就可能需要中断线程.场景:从网络上下载一个100M的文件,用户在下载过程中中断下载任务的执行. 中断线程就是其他线程给该线程发一个信号,该线程收到信号后 ...

  5. VS 快捷键和正则替换

    本文在VS2017中可用 1.注释 :Ctrl  K C 取消注释: Ctrl K U 2.整理代码格式: Ctrl K D 或者 Ctrl K F 3.快速切换不同的代码窗口  Ctrl+Tab 4 ...

  6. PAT甲级——A1040 Longest Symmetric String

    Given a string, you are supposed to output the length of the longest symmetric sub-string. For examp ...

  7. [转载] OpenCV2.4.3 CheatSheet学习(四)

    五.数据的输入和输出 1. 将数据写入YAML(或XML) 注意,在OpenCV中,无论读写,文件的格式均由指定的后缀名确定.示例: FileStorage fs("test.yml&quo ...

  8. [转载] DSP6000图像位移与变形典型算法

    原文地址:转载:DSP6000图像位移与变形典型算法作者:Jane 李现路:DSP6000图像位移与变形典型算法 一.图像的平移算法 图像平移的数学表达式原理: 初始坐标为(x0,y0)的点经过平移( ...

  9. 2018-12-15-VisualStudio-通过-EditorBrowsable-隐藏不开放的属性或方法

    title author date CreateTime categories VisualStudio 通过 EditorBrowsable 隐藏不开放的属性或方法 lindexi 2018-12- ...

  10. [Array]628. Maximum Product of Three Numbers

    Given an integer array, find three numbers whose product is maximum and output the maximum product. ...