`

FileUtils_下载小应用

    博客分类:
  • JAVA
阅读更多

FileExportUtils

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;

public class FileExportUtils {
	
	private static HttpServletRequest excelRequest = null;
	private static HttpServletResponse excelResponse = null;
	private static FileOutputStream fileOut;
	
	public FileExportUtils(PageContext context) {
		this.excelRequest = (HttpServletRequest) context.getRequest();
		this.excelResponse = (HttpServletResponse) context.getResponse();
	}
	
	public FileExportUtils(HttpServletRequest request,
			HttpServletResponse response) {
		excelRequest = request;
		excelResponse = response;
	}
	
	public void outputTxt(String excelName, String resultStr) {
		//String realPath = "c:\\"+excelName+".xls";
		String realPath = getExcelRealPath(excelName);
		writerFileStream(realPath,resultStr);
		downloadFile(excelName);
	}
	
	private static String getExcelRealPath(String excelName) {
		String realPath = excelRequest.getRealPath("/UploadFile");
		File excelFile = new File(realPath);
		if(!excelFile.exists()) {
			excelFile.mkdirs();
		}
		excelName = realPath+ "\\" + excelName+".txt";
		return  excelName;
	} 
	
	private static void downloadFile(String strfileName) {
		try {
			// 获得ServletContext对象
			if(excelFileNotFund(strfileName)) {
				throw new IllegalArgumentException("File=["+strfileName+"] not fund file path");
			}
			// 取得文件的绝对路径
			File excelFile = getExcelDownloadPath(strfileName);
			putResponseStream(strfileName, excelFile);
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}
	
	/**
	 * 
	 * @param strfileName : 文件名称
	 * @param excelName  : 文件的相对路径或绝对路径
	 * @throws UnsupportedEncodingException
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	private static void putResponseStream(String strfileName, File excelName)
			throws UnsupportedEncodingException, FileNotFoundException,
			IOException {
		strfileName = URLEncoder.encode(strfileName, "UTF-8");
		excelResponse.setHeader("Content-disposition","attachment; filename=" + strfileName+".txt");
		excelResponse.setContentLength((int) excelName.length());
//		excelResponse.setContentType("application/x-download");
//		excelResponse.setContentType("application/vnd.ms-Excel");
		excelResponse.setContentType("application/x-msdownload");
		byte[] buffer = new byte[4096];
		int i = 0;
		FileInputStream fis = new FileInputStream(excelName);
		while ((i = fis.read(buffer,0,4096)) > 0) {
			JspWriter out = null;
			excelResponse.getOutputStream().write(buffer, 0, i);
		}
		excelResponse.flushBuffer();
	}
	
	//用传入参数的判断
	private static boolean excelFileNotFund(String strfileName) {
		return strfileName ==  null|| strfileName.equals("");
	}
	
	public static File getExcelDownloadPath(String excelName) {
		String realPath = excelRequest.getRealPath("/UploadFile");
		excelName = realPath+ "\\" + excelName+".txt";
		File excelFile = new File(excelName);
		return  excelFile;
	}
	
	/**
	 * 输入当前WorkBook为下载临时文件记录
	 * 
	 * @param excelName
	 */
	public void writerFileStream(String excelName,String resultStr) {
		try {
			fileOut = new FileOutputStream(excelName);
			fileOut.write(resultStr.getBytes());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				fileOut.flush();
				fileOut.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		//FileOutputStream fis = new FileOutputStream();
	}
}

 

分享到:
评论

相关推荐

    FileUtils java web 文件上传下载工具

    总结,`FileUtils`是Apache Commons IO库的一个强大工具,能够简化Java Web应用中的文件操作,包括上传和下载。通过引入这个库,你可以高效地处理文件上传的保存和文件下载的发送,从而提升开发效率和代码质量。结合...

    fileutils-1.0.zip

    总的来说,`fileutils-1.0.zip`提供的评级组件简化了Java Swing应用中的用户评级功能的实现,使得开发者无需从零开始编写复杂的图形界面和交互逻辑,提高了开发效率并保持了良好的用户体验。开源项目的特性也意味着...

    android获取应用程序大小,缓存数据信息

    在Android系统中,获取应用程序的大小、数据大小以及缓存数据是开发者或用户进行性能优化、存储管理的重要操作。下面将详细介绍如何实现这些功能,并解释相关知识点。 首先,我们需要了解Android应用的存储结构。每...

    利用afinal框架,实现同时下载多个文件,并已进度条显示下载进度

    在进行多文件下载时,我们主要会用到AFinal的`HttpClient`和`FileUtils`两个模块。 1. **配置afinal**:在项目中引入afinal库,可以在`build.gradle`文件中添加依赖。在Android Studio中,添加如下代码: ```...

    GHDownload_android_

    在Android开发中,数据传输和文件下载是常见的需求,尤其是对于大型应用或更新包的下载。本示例"GHDownload_android_"聚焦于Android平台上的单线程与多线程断点续传下载技术,这对于提升用户体验和优化网络资源利用...

    Android实例:多线程文件下载+在线音乐播放+清除下载文件

    在UI设计上,可以使用通知栏来提示下载状态,或者创建一个浮动小窗口(悬浮窗)展示当前音乐播放状态。 综上所述,实现"Android实例:多线程文件下载+在线音乐播放+清除下载文件"这一功能,需要对Android的多线程...

    FileUtils:这个 FileUtils 是库项目。 该库项目以字节数组的形式提供了读写文件两种操作。你可以在Android应用程序中读写文件到内部存储或外部存储

    文件实用程序 FileUtil 是库项目,用于在内部和外部存储中或从内部和外部存储中读取和写入文件(byteArray)。 如何在代码中使用此库 - 用于在内部存储中/从内部存储中读取和写入文件中的字符串 ...

    juniversalchardet-1.0.3.zip

    比如,当你从互联网上下载一个未知编码的文本文件时,正确识别其字符集才能确保内容能够正常显示。再比如,处理多语言邮件或者网页时,字符集检测可以避免乱码问题,提升用户体验。"juniversalchardet"提供的便捷...

    PyPI 官网下载 | oslo.utils-3.42.1.tar.gz

    《PyPI官网下载 | oslo.utils-3.42.1.tar.gz:深入解析Python实用工具库oslo.utils》 在Python的世界里,丰富的第三方库是其强大魅力的一部分。PyPI(Python Package Index)作为官方的Python软件包仓库,为开发者...

    JSF文件下载实现

    在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上下文环境获取**: 在`downloadFile`方法中,首先通过`FacesContext.getCurrentInstance()`获取...

    利用afinal框架实现同时下载多个文件,并用进度条显示下载进度

    注意:在实际应用中,还需要考虑错误处理、网络状态检测、断点续传、下载队列管理等复杂情况,以提高用户体验和下载效率。Afinal框架虽然简洁易用,但在处理大量并发任务时可能稍显力不从心,对于大型项目,更推荐...

    s3_utils:简单的 s3 模块,以便在 s3 上下载、上传、复制和删除文件

    将此行添加到应用程序的 Gemfile 中: gem 's3_utils' 然后执行: $ bundle 或者自己安装: $ gem install s3_utils 依赖 用法 require 's3_utils' 这个模块有一些方法。 #upload_to_s3 将本地文件上传到 ...

    文件上传下载需要的jar包 java文件上传下载

    在Java开发中,文件上传和下载是常见的功能需求,尤其在网络应用中,如网页、桌面应用或移动应用。为了实现这些功能,开发者通常需要引入特定的库或jar包。在这个场景下,"文件上传下载需要的jar包"指的是用于处理...

    JSP禁用迅雷等下载工具下载文件,强制使用右键另存功能下载文件

    通过上述方法,我们可以在JSP应用中有效地禁用迅雷等第三方下载工具,同时确保用户能够通过“右键另存为”的方式安全地下载文件。这不仅提高了用户体验,还增强了系统的安全性。需要注意的是,实际部署时还需要考虑...

    java文件下载的常用方式

    在Java编程中,文件下载是常见的需求,例如从服务器向客户端传输文件,或者在应用程序内部获取网络资源。本文将详细探讨Java实现文件下载的几种主要方法。 ### 1. 使用HttpServletResponse #### 1.1 设置Content-...

    Android应用源码之程序的安装、卸载和更新.zip

    3. `FileUtils`: 文件操作相关的辅助类,用于删除应用数据。 最后,程序的更新涉及到增量更新和全量更新。增量更新仅替换已修改的文件,而全量更新则覆盖整个APK。Android系统会检查新旧版本的差异,执行相应的更新...

    java下载文件的种方式

    在Java编程中,下载文件是一项常见的任务,尤其在构建Web应用程序时。这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这...

    java实现图片下载和上传.zip

    同时,对于图片下载,可以创建一个返回文件内容的接口,例如`@GetMapping("/download/{filename}")`,在该接口中,使用`FileUtils`类读取文件,然后设置响应头,将文件内容作为HTTP响应的正文发送给客户端。...

    基于Android的图片上传与裁剪应用.zip

    FileUtils.java提供文件复制功能,支持文件的复制操作。 ImageUtils.java包含图片选择、拍照、裁剪等功能的方法。 MainActivity.java应用的主活动,负责用户交互和图片处理的主要逻辑。 MyConstant.java定义应用...

    pd-fileutils.parser

    使用"pd-fileutils.parser",开发者可以在Web应用中实现动态数据加载和分析,比如用户上传文件后立即进行数据预览和初步处理,也可以在Node.js环境中处理大量服务器端的数据操作。这个工具可能还提供了错误处理机制...

Global site tag (gtag.js) - Google Analytics