在执行write写入流到一定字节时会弹出下载对话框,当client端点击打开或是保存时,这时候会返回 true值,如果点击取消则返回IOException false,以此来判断客户端打开完之后执行的操作,特别注意的是当client端执行打开,保存,取消操作时会再次调用进入下载方法的Action,以此来结束所构建的流的状态,刚开始不知道什么原因,后来单步执行,才发现,不过有个问题就是,如果文件比较小,,只会执行一次.
对于构建输出流的时候要注意在适当的位置构建,不然在关闭的时候调用close()方法无法关闭输出流,将会导致该进程一致被占用.
java 代码
- public boolean downloadFile(HttpServletResponse response, String urlPath) {
- boolean isSuccess = true;
- String dst_fname = urlPath.substring(urlPath.lastIndexOf("\\") + 1);
- try {
- dst_fname = URLEncoder.encode(dst_fname, "utf-8");
- } catch (UnsupportedEncodingException e2) {
- }
- FileInputStream fis = null;
- BufferedInputStream bis=null;
- OutputStream os=null;
- BufferedOutputStream bos=null;
- try {
- response.reset();
- response.setContentType("application/x-download");
- response.setHeader("Content-disposition", "attachment; filename=\""
- + dst_fname + "\"");
-
- fis = new FileInputStream(urlPath);
-
- bis = new BufferedInputStream(fis);
- os = response.getOutputStream();
- bos = new BufferedOutputStream(os);
- byte[] buf = new byte[1024];
- int i = -1;
- while ((i = bis.read(buf)) != -1) {
- bos.write(buf, 0, i);
- }
- bos.flush();
- } catch (IOException e) {
- isSuccess = false;
- } catch (Exception e) {
- isSuccess = false;
- } finally {
- try {
- if (bos != null) {
- bos.close();
- bos=null;
- }
- if (os != null) {
- os.close();
- os=null;
- }
- if (bis != null) {
- bis.close();
- bis=null;
- }
- if(fis!=null){
- fis.close();
- fis=null;
- }
- } catch (IOException e) {
- isSuccess = false;
- }
- }
-
- return isSuccess;
- }
分享到:
- 2007-08-09 16:37
- 浏览 1658
- 评论(0)
- 论坛回复 / 浏览 (0 / 2200)
- 查看更多
相关推荐
在Java编程语言中,形参(形式参数)和返回值是方法的重要组成部分,它们定义了方法的行为和交互方式。在这个“java 形参和返回值练习”中,我们可以通过分析提供的文件来深入理解这两个概念。 首先,让我们看下`...
返回值是Java方法的重要组成部分,它允许方法执行操作后向调用者传递结果。返回值可以是基本数据类型(如int、double)或复杂数据类型(如自定义类的对象)。方法的参数列表定义了方法需要的输入,可以根据需求调整...
"Java API返回值的标准化详解" Java API返回值的标准化详解是指在Java中对API返回值的统一处理和规范化。通过对返回值的标准化,可以提高API的可读性、可维护性和可扩展性。本文将详细介绍Java API返回值的标准化...
NULL 博文链接:https://icgemu.iteye.com/blog/467848
在本案例中,"java返回值封装.zip" 提供了一套基于RESTful规范的接口返回值封装方案,旨在简化Java后端开发中的接口设计工作,提高与APP或其他客户端的对接效率。 REST(Representational State Transfer,表述性...
方法(2)-有返回值的方法定义 方法—有返回值方法...图a中的代码没有逻辑错误,但编译不能通过,因为java编译器认为可能没有return语句。 注意 public static int sign(int n) { if (n > 0) return 1; else if (n ==
3. **接收Java返回值** Java服务处理完请求后,会返回一个响应。在Flex中,我们可以监听HTTPService的`result`事件来获取这个响应。在MXML中,可以这样设置: ```xml <mx:HTTPService id="javaService" result=...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
总结一下,从Android WebView调用JavaScript方法并获取返回值的关键步骤包括: 1. 启用WebView组件的JavaScript支持。 2. 使用addJavascriptInterface()方法建立Java和JavaScript之间的通信桥梁。 3. 在Java类中...
- **异常处理**:Java的native方法无法直接抛出或捕获异常,需要在C++端进行错误处理,并通过返回值或者全局变量传递错误信息给Java层。 - **线程安全**:如果多个Java线程同时调用native方法,需要确保C++代码是...
### Java参数的传递与返回值 #### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用...
- **Switch Expressions增强**:扩展了switch语句,允许其作为表达式返回值,还支持了模式匹配。 - **Text Blocks**:提供了一种新的多行字符串表示方式,避免了字符串拼接和转义字符的问题。 Java 17的更新还包括...
在本文中,我们将深入探讨Java中无参带返回值方法的使用,以及它们在实际编程中的应用。 首先,让我们了解方法的定义。在Java中,方法声明由返回类型、方法名、一对圆括号和方法体组成。对于无参带返回值的方法,...
方法(1)-无返回值的方法定义 方法-无返回值的方法定义 清楚方法定义的两个组成部分 理解并正确确定方法的头部 会正确编写无返回值方法的方法体 方法定义 修饰符 返回值类型 方法名(参数列表){ …… …… } 方法...
Java简单内存分析 堆 栈 方法区 j仅供个人参考 不喜勿喷
8. **函数式编程**:Java 8引入了函数式接口,如`Runnable`, `Callable`, `Consumer`, `Supplier`等,支持函数式编程风格,可以作为方法参数传递或作为返回值。 9. **Stream API**:这是一个强大的新特性,用于处理...
带参数和返回值的方法是Java方法的一个重要类型,它们使得代码的复用性和模块化设计变得更为高效。本篇将深入探讨Java中带参数和返回值的方法,以及如何在实际开发中有效利用它们。 一、方法的定义与调用 1. 定义...
在本示例中,"java--接口--下载文件--可支持断点续传"指的是利用Java设计一个接口来处理文件下载,并且这个接口支持断点续传功能。断点续传是一项实用的技术,它允许用户在下载过程中暂停并稍后从上次中断的地方继续...
本篇文章将详细讲解Java中带参无返回值方法的使用,帮助开发者更好地理解和运用这一核心概念。 1. 方法定义: 在Java中,一个无返回值的方法会被声明为`void`类型。这样的方法没有`return`语句,其主要目的是执行一...
此外,现代开发框架和库,如Java的Junit或Python的unittest,提供了方便的方法来断言函数返回值。 文件“ExeParemates”和“parameters”可能指的是程序执行时的命令行参数。这些参数可以影响程序的行为,例如指定...