`
mimang2007110
  • 浏览: 237211 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java下载文件的四种方式

 
阅读更多

 

try
        {
            // path是指欲下载的文件的路径。
            String path = "D:/file/aa.zip";
            File file = new File(path);
            // 取得文件名。
            String filename = file.getName();
            // 取得文件的后缀名。
            String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
            
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            
            // 清空response
            response.reset();
            
            // 设置response的Header,输出文件
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }

 

// 下载本地文件
        String fileName = "aa.zip"; // 文件的默认保存名
        
        // 读到流中
        InputStream inStream = new FileInputStream("aa.zip");// 文件的存放路径
        
        // 设置输出的格式
        response.reset();
        response.setContentType("bin");
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
        
        // 循环取出流中的数据
        byte[] b = new byte[100];
        int len;
        try
        {
            while ((len = inStream.read(b)) > 0)
            {
                response.getOutputStream().write(b, 0, len);
            }
            
            inStream.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

 

 

public void downloadNet(HttpServletResponse response)
        throws MalformedURLException
    {
        // 下载网络文件
        int bytesum = 0;
        int byteread = 0;
        
        URL url = new URL("windine.blogdriver.com/aa.gif");
        
        try
        {
            URLConnection conn = url.openConnection();
            InputStream inStream = conn.getInputStream();
            FileOutputStream fs = new FileOutputStream("F:/aa.gif");
            
            byte[] buffer = new byte[1204];
            int length;
            while ((byteread = inStream.read(buffer)) != -1)
            {
                bytesum += byteread;
                System.out.println(bytesum);
                fs.write(buffer, 0, byteread);
            }
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

 

//支持在线打开文件的一种方式
    public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine)
        throws Exception
    {
        File f = new File(filePath);
        if (!f.exists())
        {
            response.sendError(404, "File not found!");
            return;
        }
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;
        
        response.reset(); // 非常重要
        if (isOnLine)
        { // 在线打开方式
            URL u = new URL("file:///" + filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
            // 文件名应该编码成UTF-8
        }
        else
        { // 纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
        }
        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }

 

 

 

 

分享到:
评论

相关推荐

    Java文件下载.docx

    ### Java文件下载技术详解 #### 一、简介 在现代软件开发中,文件下载是常见的功能之一,尤其是在Web应用中。本文将详细介绍如何使用Apache HttpClient库实现文件下载,并提供一个可直接使用的Java代码示例。 ###...

    java 使用流下载文件

    ### Java使用流下载文件知识点详解 #### 一、概述 在Web应用开发中,经常需要实现文件下载功能,比如用户可以下载系统中的报告、图片、文档等资源。使用Java流来处理文件下载是一种非常常见的技术手段。本文将详细...

    Java实现FTP批量大文件上传下载

    让我们设想这样一个情形--我们想写一个纯 Java 的从一个远程计算机上运行的 FTP 服务器上传下载文件的应用程序;我们还希望能够得到那些供下载的远程文件的基本文件信息,如文件名、数据或者文件大小等。尽管从头...

    JAVA本地文件下载

    在文件下载的过程中,我们通常会利用`HttpServletResponse`来设置响应头信息,如文件类型、编码方式等,以便浏览器能够正确地解析并下载文件。 ##### 2.2 FacesContext `FacesContext` 是JavaServer Faces (JSF) ...

    Java FTP 指定下载文件和上传文件到指定的服务器目录

    ### Java FTP 指定下载文件和上传文件到指定的服务器目录 #### 一、概述 在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定...

    java读取xml文件的四种方法

    java读取xml文件的四种方法: 第一种 DOM 实现方法 第二种 DOM4J实现方法 第三种 JDOM实现方法 第四种SAX实现方法

    JAVA通过HttpURLConnection 上传和下载文件的方法

    JAVA通过HttpURLConnection上传和下载文件的方法 JAVA通过HttpURLConnection上传和下载文件的方法是非常有实用价值的,需要的朋友可以参考下。HttpURLConnection是一个Java类,用于从网络中读取数据或向网络中写入...

    Java实现文件下载并解决中文文件名乱码

    在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的文件名可能出现乱码的情况。本文将详细介绍如何...

    java response 下载文件方法

    ### Java Response 下载文件方法详解 在Web应用开发过程中,经常需要实现文件的上传与下载功能。其中,通过`java response`实现文件下载是常见需求之一。本文将深入解析如何利用Java中的`HttpServletResponse`对象...

    HTTP文件下载Java编程

    ### HTTP文件下载Java编程知识点解析 #### 一、导入必要的包与类 在进行HTTP文件下载之前,首先需要导入一系列的Java包与类,这些...这种方式适用于大多数场景下的文件下载需求,同时也具备一定的灵活性和可扩展性。

    Java开发帮助文档

    6. **集合框架**:Java集合框架是一组接口和类,如List、Set、Map等,它们提供了一种组织和操作对象的方式。ArrayList、LinkedList、HashSet、HashMap等是常见的实现类。 7. **IO流**:Java的IO流处理涵盖了读写...

    java学习文档.pdf

    Java中的类声明有两种方式: 1. **public class**: - 当使用`public`关键字声明类时,此类必须与public修饰的.java文件名一致。 - 若使用`class`关键字声明类,则类名可以与文件名不一致,但是这会引发编译警告...

    java学习文档

    Java 语言提供了两种注释方式: * 单行注释:使用双斜杠(//)开头,注释内容直到行末。 * 多行注释:使用 /* 和 */ 囲み,注释内容可以跨多行。 ### 3. Java 标识符 Java 标识符是指在 Java 语言中用于命名变量...

    java四种网站敏感词检测.zip

    本压缩包包含了四种不同的Java敏感词检测工具,它们各有特点,适用于不同的场景需求。 1. **KeyWordFilter**: 这个工具以其高匹配度著称,但其运行速度相对较慢。KeyWordFilter可能采用了全词匹配或者精确匹配的...

    java多线程下载文件

    ### Java多线程断点下载文件:关键技术与实现 在当今高速互联网环境下,高效的数据传输技术变得至关重要。Java多线程断点续传文件下载技术就是一种能够显著提高下载速度和稳定性的方法。本文将深入解析Java多线程...

    java FTPClient 文件上传下载文件

    ### Java FTPClient 文件上传下载知识点详解 #### 一、引言 在现代软件开发中,文件传输是一项基本而重要的功能。对于Java开发者来说,利用Java的FTPClient进行文件的上传和下载是常见的需求之一。本篇文章将围绕...

    Java下载图片代码+教程

    ### Java下载图片代码+教程 #### 一、背景与需求 在互联网开发中,经常会遇到需要从网络上下载图片的需求。比如,在爬虫项目中抓取网页中的图片资源,或者在构建图片分享应用时需要从远程服务器下载图片显示在...

    java+ftp方式上传下载文件

    根据给定的信息,本文将详细解释如何使用Java与Apache Commons Net和IO库通过FTP协议上传和下载文件。这里会深入探讨代码实现、配置以及常见问题处理等知识点。 ### Java FTP 文件上传与下载 #### 一、环境搭建与...

Global site tag (gtag.js) - Google Analytics