这篇文章主要给大家总结介绍了关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)下载文件的四种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1.以流的方式下载.
公共HttpServletResponse下载(字符串路径,HttpServletResponse响应){
尝试{
//路径是指欲下载的文件的路径。
文件file=新文件(路径);
//取得文件名。
字符串filename=file。getname();
//取得文件的后缀名。
string ext=文件名。子字符串(文件名。lastindexof(' . ')) 1).toupper case();
//以流的形式下载文件。
InputStream fis=new BufferedInputStream(新文件输入流(路径));
byte[]buffer=新字节[fis。available()];
fis.read(缓冲区);
fis。close();
//清空反应
回应。reset();
//设置反应的页眉
回应。添加标头(' Content-Disposition ',' attachmentfilename='新字符串(文件名。getbytes());
回应。添加标题('内容长度',' '文件。length());
到客户端的输出流=新的BufferedOutputStream(响应。获取输出流());
回应。设置内容类型(“应用程序/八位流”).
toClient.write(缓冲区);
给客户。flush();
给客户。close();
} catch (IOException ex) {
前任。printstacktrace();
}
返回响应;
}
2.下载本地文件
公共void下载本地(http servlet响应响应)引发文件未找到异常{
//下载本地文件
字符串fileName='Operator.doc ' .toString();//文件的默认保存名
//读到流中
InputStream inStream=新文件InputStream(' c:/运算符。doc’);//文件的存放路径
//设置输出的格式
回应。reset();
回应。设置内容类型(“bin”);
回应。添加标题(' Content-Disposition ',' attachment fileName=' ' fileName ' ');
//循环取出流中的数据
字节[] b=新字节[100];
int len
尝试{
while ((len=inStream.read(b)) 0)
response.getOutputStream().write(b,0,len);
流内。close();
} catch (IOException e) {
e。printstacktrace();
}
}
3.下载网络文件
公共void下载网(http servlet响应响应)引发MalformedURLException {
//下载网络文件
int字节总和=0;
int byteread=0;
URL URL=新URL(' windine。博客司机。com/logo。gif’);
尝试{
URL连接连接=URL。打开连接();
InputStream inStream=conn . getinputstream();
文件输出流fs=新文件输出流(' c:/ABC。gif’);
字节[]缓冲区=新字节[1204];
(同Internationalorganizations)国际组织长度;
while((byteread=instream。读取(缓冲区))!=-1) {
bytesum=byteread
系统。出去。println(字节和);
fs.write(buffer,0,byteread);
}
} catch(找不到文件异常e){
e。printstacktrace();
} catch (IOException e) {
e。printstacktrace();
}
}
4.支持在线打开的方式
公共空的下载(字符串文件路径,HttpServletResponse响应,布尔值isOnLine)引发异常{
文件f=新文件(文件路径);
如果(!f.exists()) {
response.sendError(404,”找不到文件!");
返回;
}
BufferedInputStream br=new BufferedInputStream(新文件输入流(f));
字节[]缓冲区=新字节[1024];
int len=0;
回应。reset();//非常重要
if (isOnLine) { //在线打开方式
URL u=新URL(' file:///'文件路径);
回应。设置内容类型(u .打开连接().获取内容类型());
回应。set header(' Content-Disposition ',' inline filename=' f . getname());
//文件名应该编码成UTF-8
} else { //纯下载方式
回应。设置内容类型(“application/x-msdownload”);
回应。设置标题('内容-处置','附件;filename=' f . getname());
}
输出流out=响应。获取输出流();
while ((len=br.read(buf)) 0)
out.write(buf,0,len);
br。close();
出去。close();
}
Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中批量下载文件,将下载多个文件打包成活力文件下载。
//批量文件下载(将多个文件打包成活力包下载)
公共静态void batchDownLoadFile(http servlet请求请求,HttpServletResponse响应,字符串文件名,字符串[]文件路径,字符串[]文档名,字符串登录名){
字节[]缓冲区=新字节[1024];
Date Date=new Date();
//生成活力文件存放位置
string strZipPath=常量。导出地址登录名称日期。gettime()' .zip ';
文件文件=新文件(常数。出口地址);
如果(!file.isDirectory()!file.exists()){
//创建单层目录
//f . mkdir();
//创建多层目录
文件。mkdirs();
}
尝试{
ZipOutputStream out=new ZipOutputStream(新文件输出流(strZipPath));
//需要同时下载的多个文件
for(int I=0;我文件路径。长度;i ) {
文件f=新文件(文件路径[I]);
文件输入流fis=新文件输入流(f);
系统。出去。println(文档名[I]);
出去。put nextentry(新的zip条目(文档名[I]));
//设置压缩文件内的字符编码,不然会变成乱码
出去。设置编码(“GBK”);
int len
//读入需要下载的文件的内容,打包到活力文件
while((len=fis。读取(缓冲区))0){
out.write(buffer,0,len);
}
出去。关闭条目();
fis。close();
}
出去。close();
公共方法.下载文件(请求,响应,strZipPath,文件名)。zip’);
文件温度=新文件(strZipPath);
if(temp.exists()){
在…之时delete();
}
} catch(异常e) {
System.out.println('文件下载错误');
}
}
总结
到此这篇关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)下载文件的四种方式的文章就介绍到这了,更多相关Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)下载文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。