文件操作(全类型通用)

下载

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;


import com.common.Parse_HtmlContentType;

public class DownloadFileUtil {
	
	private String filePath;
	private String fileName;
	private HttpServletResponse response;
	private HttpServletRequest request;
	private String fileExtensions;
	private byte [] b;

	private DownloadFileUtil(){}
	
	/**
	 * 带有参数的构造方法(下载文件)
	 * 
	 * filepath为文件路径
	 * filename 下载到本地后的名称
	 * response
	 * @param filePath
	 * @param fileName
	 * @param response
	 */
	private DownloadFileUtil(String filePath,String fileName,HttpServletResponse response,HttpServletRequest request){
		this.filePath=filePath;
		this.fileName=fileName;
		this.response=response;
		this.request = request;
		this.fileExtensions=fileName.substring(fileName.lastIndexOf(".")+1);
	}
	
	public static void downloadFile(String filePath,String fileName,HttpServletResponse response,HttpServletRequest request) throws FileNotFoundException,IOException {
		// filename= 123.doc
		DownloadFileUtil downloadFileUtil = new DownloadFileUtil(filePath,fileName,response,request);
		downloadFileUtil.generateBytes();
		downloadFileUtil.downLoad();
	}
	
	private void generateBytes() throws FileNotFoundException,IOException{
		FileInputStream fis = new FileInputStream(filePath);
		b = new byte[fis.available()];
		fis.read(b);
		fis.close();
	}

	private void downLoad() throws IOException{
		String agent = request.getHeader("User-Agent").toLowerCase();  
		if (agent.indexOf("firefox") >0)
			fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
		else if (agent != null && (agent.indexOf("msie") != -1 || (agent.indexOf("rv") != -1 && agent.indexOf("firefox") == -1)))
			fileName = java.net.URLEncoder.encode(fileName, "UTF-8");//IE浏览器
		else
			fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
		response.reset();
		String contentType = Parse_HtmlContentType.getValue(fileExtensions);
		response.setContentType(contentType);
		//String fileNameNew =fileName.replaceAll(" ", "_");
		response.addHeader("Content-Disposition","attachment;filename=\""+ fileName+"\"");
		
		OutputStream out = response.getOutputStream();
		out.write(b);
		out.close();		
	}	
}
Parse_HtmlContentType.java
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/*
 *解析Html内容类型 
 */
public class Parse_HtmlContentType {

	
	private Parse_HtmlContentType(){
	};
	
	private static final String htmlContentTypeFile =  (File.separator+"htmlContentType.properties");
	
	private static Properties p;
	
	private static Parse_HtmlContentType instance ;
	
	public String path = this.getClass().getResource("/").getPath();
	
	public static String getValue(String name) throws IOException{
		
		if(instance == null){
			instance = new Parse_HtmlContentType();
			InputStream in = new BufferedInputStream(new FileInputStream(instance.path+htmlContentTypeFile));
			p = new Properties();
			p.load(in);
		}
		String value = p.getProperty(name);
		return value==null?p.getProperty("html"):value;
	}
	
}

htmlContentType.properties

ez=application/andrew-inset
hqx=application/mac-binhex40
cpt=application/mac-compactpro
mathml=application/mathml+xml
doc=application/msword
bin=application/octet-stream
dms=application/octet-streamlha
lzh=application/octet-streamexe
class=application/octet-stream
so=application/octet-stream
dll=application/octet-stream
oda=application/oda
ogg=application/ogg
pdf=application/pdf
ai=application/postscript
eps=application/postscript
ps=application/postscript
rdf=application/rdf+xml
smil=application/smil
smi=application/smil
gram=application/srgs
grxml=application/srgs+xml
mif=application/vnd.mif
xul=application/vnd.mozilla.xul+xml
xls=application/vnd.ms-excel
ppt=application/vnd.ms-powerpoint
wbxml=application/vnd.wap.wbxml
wmlc=application/vnd.wap.wmlc
wmlsc=application/vnd.wap.wmlscriptc
vxml=application/voicexml+xml
bcpio=application/x-bcpio
vcd=application/x-cdlink
pgn=application/x-chess-pgn
cpio=application/x-cpio
csh=application/x-csh
dcr=application/x-director
dir=application/x-director
dxr=application/x-director
dvi=application/x-dvi
spl=application/x-futuresplash
gtar=application/x-gtar
hdf=application/x-hdf
php=application/x-httpd-php
php4=application/x-httpd-php
php3=application/x-httpd-php
phtml=application/x-httpd-php
phps=application/x-httpd-php-source
js=application/x-javascript
skp=application/x-koan
skd=application/x-koan
skt=application/x-koan
skm=application/x-koan
latex=application/x-latex
cdf=application/x-netcdf
nc=application/x-netcdf
crl=application/x-pkcs7-crl
sh=application/x-sh
shar=application/x-shar
swf=application/x-shockwave-flash
sit=application/x-stuffit
sv4cpio=application/x-sv4cpio
sv4crc=application/x-sv4crc
tgz=application/x-tar
tar=application/x-tar
tcl=application/x-tcl
tex=application/x-tex
texinfo=application/x-texinfo
texi=application/x-texinfo
t=application/x-troff
tr=application/x-troff
roff=application/x-troff
man=application/x-troff-man
me=application/x-troff-me
ms=application/x-troff-ms
ustar=application/x-ustar
src=application/x-wais-source
crt=application/x-x509-ca-cert
xhtml=application/xhtml+xml
xht=application/xhtml+xml
xml=application/xml
xsl=application/xml
dtd=application/xml-dtd
xslt=application/xslt+xml
zip=application/zip
au=audio/basic
snd=audio/basic
mid=audio/midi
midi=audio/midi
kar=audio/midi
mpga=audio/mpeg
mp2=audio/mpeg
mp3=audio/mpeg
aif=audio/x-aiff
aiff=audio/x-aiff
aifc=audio/x-aiff
m3u=audio/x-mpegurl
ram=audio/x-pn-realaudio
rm=audio/x-pn-realaudio
rpm=audio/x-pn-realaudio-plugin
ra=audio/x-realaudio
wav=audio/x-wav
pdb=chemical/x-pdb
xyz=chemical/x-xyz
bmp=image/bmp
cgm=image/cgm
gif=image/gif
ief=image/ief
jpeg=image/jpeg
jpg=image/jpeg
jpe=image/jpeg
png=image/png
svg=image/svg+xml
tiff=image/tiff
tif=image/tiff
djvu=image/vnd.djvu
djv=image/vnd.djvu
wbmp=image/vnd.wap.wbmp
ras=image/x-cmu-raster
ico=image/x-icon
pnm=image/x-portable-anymap
pbm=image/x-portable-bitmap
pgm=image/x-portable-graymap
ppm=image/x-portable-pixmap
rgb=image/x-rgb
xbm=image/x-xbitmap
xpm=image/x-xpixmap
xwd=image/x-xwindowdump
igs=model/iges
iges=model/iges
msh=model/mesh
mesh=model/mesh
silo=model/mesh
wrl=model/vrml
vrml=model/vrml
ics=text/calendar
ifb=text/calendar
css=text/css
shtml=text/html
html=text/html
htm=text/html
asc=text/plain
txt=text/plain
rtx=text/richtext
rtf=text/rtf
sgml=text/sgml
sgm=text/sgml
tsv=text/tab-separated-values
wml=text/vnd.wap.wml
wmls=text/vnd.wap.wmlscript
etx=text/x-setext
mpeg=video/mpeg
mpg=video/mpeg
mpe=video/mpeg
qt=video/quicktime
mov=video/quicktime
mxu=video/vnd.mpegurl
avi=video/x-msvideo
movie=video/x-sgi-movie
ice=x-conference/x-cooltalk


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鑫不列迭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值