`
diandidemeng
  • 浏览: 34638 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA下载的返回值

    博客分类:
  • java
阅读更多
      在执行write写入流到一定字节时会弹出下载对话框,当client端点击打开或是保存时,这时候会返回 true值,如果点击取消则返回IOException false,以此来判断客户端打开完之后执行的操作,特别注意的是当client端执行打开,保存,取消操作时会再次调用进入下载方法的Action,以此来结束所构建的流的状态,刚开始不知道什么原因,后来单步执行,才发现,不过有个问题就是,如果文件比较小,,只会执行一次.
    对于构建输出流的时候要注意在适当的位置构建,不然在关闭的时候调用close()方法无法关闭输出流,将会导致该进程一致被占用.
java 代码
  1. public boolean downloadFile(HttpServletResponse response, String urlPath) {   
  2.         boolean isSuccess = true;   
  3.         String dst_fname = urlPath.substring(urlPath.lastIndexOf("\\") + 1);  
  4.         try {  
  5.             dst_fname = URLEncoder.encode(dst_fname, "utf-8");  
  6.         } catch (UnsupportedEncodingException e2) {  
  7.         }  
  8.         FileInputStream fis = null;  
  9.         BufferedInputStream bis=null;  
  10.         OutputStream os=null;  
  11.         BufferedOutputStream bos=null;  
  12.         try {  
  13.             response.reset();  
  14.             response.setContentType("application/x-download");  
  15.             response.setHeader("Content-disposition", "attachment; filename=\""  
  16.                     + dst_fname + "\"");   
  17.   
  18.             fis = new FileInputStream(urlPath);   
  19.   
  20.             bis = new BufferedInputStream(fis);   
  21.             os = response.getOutputStream();   
  22.             bos = new BufferedOutputStream(os);   
  23.             byte[] buf = new byte[1024];   
  24.             int i = -1;   
  25.             while ((i = bis.read(buf)) != -1) {   
  26.                 bos.write(buf, 0, i);   
  27.             }   
  28.             bos.flush();   
  29.         } catch (IOException e) {   
  30.             isSuccess = false;   
  31.         } catch (Exception e) {   
  32.             isSuccess = false;   
  33.         } finally {   
  34.             try {   
  35.                 if (bos != null) {   
  36.                     bos.close();   
  37.                     bos=null;   
  38.                 }   
  39.                 if (os != null) {   
  40.                     os.close();   
  41.                     os=null;   
  42.                 }   
  43.                 if (bis != null) {   
  44.                     bis.close();   
  45.                     bis=null;   
  46.                 }   
  47.                 if(fis!=null){   
  48.                     fis.close();   
  49.                     fis=null;   
  50.                 }   
  51.             } catch (IOException e) {   
  52.                 isSuccess = false;   
  53.             }   
  54.         }   
  55.            
  56.         return isSuccess;   
  57.     }  
分享到:
评论

相关推荐

    java 形参和返回值练习

    在Java编程语言中,形参(形式参数)和返回值是方法的重要组成部分,它们定义了方法的行为和交互方式。在这个“java 形参和返回值练习”中,我们可以通过分析提供的文件来深入理解这两个概念。 首先,让我们看下`...

    Java的方法和返回值.doc

    返回值是Java方法的重要组成部分,它允许方法执行操作后向调用者传递结果。返回值可以是基本数据类型(如int、double)或复杂数据类型(如自定义类的对象)。方法的参数列表定义了方法需要的输入,可以根据需求调整...

    java api返回值的标准化详解

    "Java API返回值的标准化详解" Java API返回值的标准化详解是指在Java中对API返回值的统一处理和规范化。通过对返回值的标准化,可以提高API的可读性、可维护性和可扩展性。本文将详细介绍Java API返回值的标准化...

    在Java 线程中返回值的用法

    NULL 博文链接:https://icgemu.iteye.com/blog/467848

    java返回值封装.zip

    在本案例中,"java返回值封装.zip" 提供了一套基于RESTful规范的接口返回值封装方案,旨在简化Java后端开发中的接口设计工作,提高与APP或其他客户端的对接效率。 REST(Representational State Transfer,表述性...

    Java程序设计基础:定义方法-有返回值的方法定义.pptx

    方法(2)-有返回值的方法定义 方法—有返回值方法...图a中的代码没有逻辑错误,但编译不能通过,因为java编译器认为可能没有return语句。 注意 public static int sign(int n) { if (n > 0) return 1; else if (n ==

    flex httpservice 和 java通信 获取 java端的返回值

    3. **接收Java返回值** Java服务处理完请求后,会返回一个响应。在Flex中,我们可以监听HTTPService的`result`事件来获取这个响应。在MXML中,可以这样设置: ```xml <mx:HTTPService id="javaService" result=...

    java调用存储过程同时返回值和多个table

    java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集

    android webview中使用Java调用JavaScript方法并获取返回值

    总结一下,从Android WebView调用JavaScript方法并获取返回值的关键步骤包括: 1. 启用WebView组件的JavaScript支持。 2. 使用addJavascriptInterface()方法建立Java和JavaScript之间的通信桥梁。 3. 在Java类中...

    迅雷下载接口java实现

    - **异常处理**:Java的native方法无法直接抛出或捕获异常,需要在C++端进行错误处理,并通过返回值或者全局变量传递错误信息给Java层。 - **线程安全**:如果多个Java线程同时调用native方法,需要确保C++代码是...

    java参数的传递与返回值

    ### Java参数的传递与返回值 #### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用...

    java 17下载,版本 17.0.5, linux各版本

    - **Switch Expressions增强**:扩展了switch语句,允许其作为表达式返回值,还支持了模式匹配。 - **Text Blocks**:提供了一种新的多行字符串表示方式,避免了字符串拼接和转义字符的问题。 Java 17的更新还包括...

    Java中无参带返回值方法的使用共4页.pdf.zip

    在本文中,我们将深入探讨Java中无参带返回值方法的使用,以及它们在实际编程中的应用。 首先,让我们了解方法的定义。在Java中,方法声明由返回类型、方法名、一对圆括号和方法体组成。对于无参带返回值的方法,...

    Java程序设计基础:定义方法-无返回值的方法定义.pptx

    方法(1)-无返回值的方法定义 方法-无返回值的方法定义 清楚方法定义的两个组成部分 理解并正确确定方法的头部 会正确编写无返回值方法的方法体 方法定义 修饰符 返回值类型 方法名(参数列表){ …… …… } 方法...

    Java内存简单分析

    Java简单内存分析 堆 栈 方法区 j仅供个人参考 不喜勿喷

    java8 32+64位安装包下载

    8. **函数式编程**:Java 8引入了函数式接口,如`Runnable`, `Callable`, `Consumer`, `Supplier`等,支持函数式编程风格,可以作为方法参数传递或作为返回值。 9. **Stream API**:这是一个强大的新特性,用于处理...

    Java中带参带返回值方法的使用共3页.pdf.zip

    带参数和返回值的方法是Java方法的一个重要类型,它们使得代码的复用性和模块化设计变得更为高效。本篇将深入探讨Java中带参数和返回值的方法,以及如何在实际开发中有效利用它们。 一、方法的定义与调用 1. 定义...

    java--接口--下载文件--可支持断点续传.rar

    在本示例中,"java--接口--下载文件--可支持断点续传"指的是利用Java设计一个接口来处理文件下载,并且这个接口支持断点续传功能。断点续传是一项实用的技术,它允许用户在下载过程中暂停并稍后从上次中断的地方继续...

    Java中带参无返回值方法的使用共4页.pdf.zip

    本篇文章将详细讲解Java中带参无返回值方法的使用,帮助开发者更好地理解和运用这一核心概念。 1. 方法定义: 在Java中,一个无返回值的方法会被声明为`void`类型。这样的方法没有`return`语句,其主要目的是执行一...

    获取(设置)应用程序返回值

    此外,现代开发框架和库,如Java的Junit或Python的unittest,提供了方便的方法来断言函数返回值。 文件“ExeParemates”和“parameters”可能指的是程序执行时的命令行参数。这些参数可以影响程序的行为,例如指定...

Global site tag (gtag.js) - Google Analytics