1.以流的方式下载
public httprvletrespon download(string path, httprvletrespon respon) { try { // path是指欲下载的文件的路径。 file file = new file(path); // 取得文件名。 舞蹈教师资格证 string filename = file.getname(); // 取得文件的后缀名。 string ext = filename.substring(filename.lastindexof(".") + 1).toupperca(); // 以流的形式下载文件。 inputstream fis = new bufferedinputstream(new fileinputstream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.clo(); // 清空respon respon.ret(); // 设置respon的header respon.addheader("content-disposition", "attachment;filename=" + new string(filename.getbytes())); respon.addheader("content-length", "" + file.length()); outputstream toclient = new bufferedoutputstream(respon.getoutputstream()); respon.tcontenttype("application/octet-stream"); toclient.write(buffer); toclient.flush(); toclient.clo(); } catch (ioexception ex) { ex.printstacktrace(); } return respon; }
2.下载本地文件
public void downloadlocal(httprvletrespon respon) throws filenotfoundexception { // 下载本地文件 string filename = "operator.doc".tostring(); // 文件的默认保存名 // 读到流中 inputstream instream = new fileinputstream("c:/operator.doc");// 文件的存放路径 // 设置输出的格式 respon.ret(); respon.tcontenttype("bin"); respon.addheader("content-disposition", "attachment; filename=\"" + filename + "\""); // 循环取出流中的数据 byte[] b = new byte[100]; int len; try { while ((len = instream.read(b)) > 0) respon.getoutputstream().write(b, 0, len); instream.clo(); } catch (ioexception e) { e.printstacktrace(); } }
3.下载网络文件
public void downloadnet(httprvletrespon respon) throws malformedurlexception { // 下载网络文件 int bytesum = 0; int 骜byteread = 0; url url = new url("windine.blogdriver.com/logo.gif"); try { urlconnection conn = url.openconnection(); inputstream instream = conn.getinputstream(); fileoutputstream fs = new fileoutputstream("c:/abc.gif"); byte[] buffer = new byte[1204]; int length; while ((byteread = instream.read(buffer)) != -1) { bytesum += byteread; system.out.println(bytesum); fs.write(buffer, 0, byteread); } } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } }
4.支持在线打开的方式
public void download(string filepath, httprvletrespon respon, boolean isonline) throws exception { file f = new file(filepath); if (!f.exists()) { respon.nderror(404, "file not found!"); return; } bufferedinputstream br = new bufferedinputstream(new fileinputstream(f)); byte[] buf = new byte[1024]; int len = 0; respon.ret(); // 非常重要 if (isonline) { // 在线打开方式 url u = new url("file:///" + filepath); respon.tcontenttype(u.openconnection().getcontenttype()); respon.theader("content-disposition", "inline; filen幼师读书笔记ame=" + f.getname()); // 文件名应该编码成utf-8 } el { // 纯下载方式 respon.tcontenttype("application/x-msdownload"); respon.theader("content-disposition", "attachment; filename=" + f.getname()); } outputstream out = respon.get马夫哥outputstream(); while ((len = br.read(buf)) > 0) out.write(buf, 0, len); br.clo(); out.clo泰国免税店(); }
到此这篇关于java下载文件的四种方式详细代码的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 03:32:19,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8dfaef25ebb5007843f84cd347b27702.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java下载文件的四种方式详细代码.doc
本文 PDF 下载地址:Java下载文件的四种方式详细代码.pdf
留言与评论(共有 0 条评论) |