java下载文件代码 java下载文件夹代码

Java中文件下载该怎么写代码求高手指导if (upfile.exists()) {
bytes = FileUtils.readFileToByteArray(upfile);
response.setContentType("application/x-download");
String agent = request.getHeader("USER-AGENT");//用户代理
// 防止中文文件名乱码
if (null != agent-1 != agent.indexOf("MSIE")) {
String codedfilename = StringUtils.replace(URLEncoder.encode(fileName, "UTF-8"), " ", " ");
response.setHeader("Content-Disposition", "attachment;filename="codedfilename);
} else if (null != agent-1 != agent.indexOf("Mozilla")) {
String codedfilename = MimeUtility.encodeText(fileName, "UTF-8", "B");
response.setHeader("Content-Disposition", "attachment;filename="codedfilename);
} else {
response.setHeader("Content-Disposition", "attachment;filename="fileName);
}
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
}
Java 下载文件的方法怎么写参考下面
public HttpServletResponse download(String path, HttpServletResponse response) {
try {
// path是指欲下载的文件的路径 。
File file = new File(path);
// 取得文件名 。
String filename = file.getName();
// 取得文件的后缀名 。
String ext = filename.substring(filename.lastIndexOf(".")1).toUpperCase();
// 以流的形式下载文件 。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename="new String(filename.getBytes()));
response.addHeader("Content-Length", ""file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return response;
}
// 下载本地文件
public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {
String fileName = "Operator.doc".toString(); // 文件的默认保存名
// 读到流中
InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
// 设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\""fileName"\"");
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b))0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 下载网络文件
public void downloadNet(HttpServletResponse response) 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();
}
}
//支持在线打开文件的一种方式
public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); // 非常重要
if (isOnLine) { // 在线打开方式
URL u = new URL(""filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename="f.getName());
// 文件名应该编码成UTF-8
} else { // 纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="f.getName());
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf))0)
out.write(buf, 0, len);
br.close();
out.close();
}
怎样编一个能实现文件下载功能的JAVA程序java实现文件下载
一、采用RequestDispatcher的方式进行
1、web.xml文件中增加
mime-mapping
extensiondoc/extension
mime-typeapplication/vnd.ms-word/mime-type
/mime-mapping
2、程序如下:
%@page language="java" import="java.net.*" pageEncoding="gb2312"%
%
response.setContentType("application/x-download");//设置为下载application/x-download
String filenamedownload = "/系统解决方案.doc";//即将下载的文件的相对路径
String filenamedisplay = "系统解决方案.doc";//下载文件时显示的文件保存名称
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="filenamedisplay);
try
{
RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
if(dispatcher != null)
{
dispatcher.forward(request,response);
}
response.flushBuffer();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
}
%
二、采用文件流输出的方式下载
1、web.xml文件中增加
mime-mapping
extensiondoc/extension
mime-typeapplication/vnd.ms-word/mime-type
/mime-mapping
2、程序如下:
%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%
%
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%后面不要换行,包括最后一个;
//因为Application Server在处理编译jsp时对于%和%之间的内容一般是原样输出,而且默认是PrintWriter,
//而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制 ,
//就会发生:getOutputStream() has already been called for this response的错误
//详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
//而且如果有换行,对于文本文件没有什么问题,但是对于其它格式 , 比如AutoCAD、Word、Excel等文件
//下载下来的文件中就会多出一些换行符0x0d和0x0a , 这样可能导致某些格式的文件无法打开,有些也可以正常打开 。
response.reset();//可以加也可以不加
response.setContentType("application/x-download");//设置为下载application/x-download
// /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
String filenamedownload = this.getClass().getClassLoader().getResource("/").getPath()"/../../系统解决方案.doc";
String filenamedisplay = "系统解决方案.doc";//系统解决方案.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename="filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))0)
{
output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
java 代码实现下载.doc文件%@ page contentType="text/html; charset=gb2312" %
%@ page import="java.io.*"%
%!
public String toUtf8String(String s)
{
StringBuffer sb = new StringBuffer();
for (int i=0;is.length();i) {
char c = s.charAt(i);
if (c = 0c = 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; jb.length; j) {
int k = b[j];
if (k0) k= 256;
sb.append("%"Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
%
%
String filename=new String(request.getParameter("filename").getBytes("ISO8859-1"),"GBK");
String dirName="D:/我.doc";
java.io.File ff=null;
String dd=dirName System.getProperties().getProperty("file.separator") filename;
try{
ff=new java.io.File(dd);
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
if (ff!=nullff.exists()ff.isFile())
{
long filelength = ff.length();
InputStream inStream=new FileInputStream(dd);
//设置输出的格式
response.reset();
response.setContentType("application/x-msdownload");
response.setContentLength((int)filelength);
response.addHeader("Content-Disposition","attachment; filename=\""toUtf8String(filename)"\"");
//循环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) 0)
response.getOutputStream().write(b,0,len);
inStream.close();
out.clear();
out = pageContext.pushBody();
}
%
:a href="https://www.04ip.com/post/d.jsp"aa/a
上面的那个是用流写的 但是也可以用超链接下载
你写上文件的路径就可以了
Java文件下载怎么实现的下载就很简单了
把你要下载的文件做成超级链接,可以不用任何组件
比如说
下载一个word文档
a href="https://www.04ip.com/post/名称.doc"名称.doc/a
路径你自己写
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URI;
import java.net.URL;
import java.util.Random;
/**
*
* 实现了下载的功能*/
public class SimpleTh {
public static void main(String[] args){
// TODO Auto-generated method stub
//String path = "倩女幽魂.mp3";//MP3下载的地址
String path ="";
try {
new SimpleTh().download(path, 3); //对象调用下载的方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getFilename(String path){//获得文件的名字
return path.substring(path.lastIndexOf('/') 1);
}
public void download(String path,int threadsize) throws Exception//下载的方法
{//参数 下载地址,线程数量
URL url = new URL(path);
HttpURLConnection conn= (HttpURLConnection)url.openConnection();//获取HttpURLConnection对象
conn.setRequestMethod("GET");//设置请求格式,这里是GET格式
conn.setReadTimeout(5*1000);//
int filelength = conn.getContentLength();//获取要下载文件的长度
String filename = getFilename(path);
File saveFile = new File(filename);
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.setLength(filelength);
accessFile.close();
int block = filelength%threadsize ==0?filelength/threadsize:filelength/threadsize 1;
for(int threadid = 0;threadid=threadsize;threadid){
new DownloadThread(url,saveFile,block,threadid).start();
}
}
private final class DownloadThread extends Thread{
private URL url;
private File saveFile;
private int block;//每条线程下载的长度
private int threadid;//线程id
public DownloadThread(URL url,File saveFile,int block,int threadid){
this.url = url;
this.saveFile= saveFile;
this.block = block;
this.threadid = threadid;
}
@Override
public void run() {
//计算开始位置的公式:线程id*每条线程下载的数据长度=?
//计算结束位置的公式:(线程id 1)*每条线程下载数据长度-1=?
int startposition = threadid*block;
int endposition = (threadid 1)*block-1;
try {
try {
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.seek(startposition);//设置从什么位置写入数据
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5*1000);
conn.setRequestProperty("Range","bytes= " startposition "-" endposition);
InputStream inStream = conn.getInputStream();
byte[]buffer = new byte[1024];
int len = 0;
while((len = inStream.read(buffer))!=-1){
accessFile.write(buffer, 0, len);
}
inStream.close();
accessFile.close();
System.out.println("线程id:" threadid "下载完成");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
通过java实现文件下载在jsp/servlet中断点/多线程下载文件
%@ page import="java.io.File" %%@ page import="java.io.IOException" %%@ page import="java.io.OutputStream" %%@ page import="java.io.RandomAccessFile" %%!public void downloadFile(HttpServletRequest request, HttpServletResponse response, File file) throws IOException {RandomAccessFile raf = new RandomAccessFile(file, "r");java.io.FileInputStream fis = new java.io.FileInputStream(raf.getFD());response.setHeader("Server", "");response.setHeader("Accept-Ranges", "bytes");long pos = 0;long len;len = raf.length();if (request.getHeader("Range") != null) {response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);pos = Long.parseLong(request.getHeader("Range").replaceAll("bytes=", "").replaceAll("-", ""));}response.setHeader("Content-Length", Long.toString(len - pos));if (pos != 0) {response.setHeader("Content-Range", new StringBuffer().append("bytes ").append(pos).append("-").append(Long.toString(len - 1)).append("/").append(len).toString());}response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", new StringBuffer().append("attachment;filename=\"").append(file.getName()).append("\"").toString());raf.seek(pos);byte[] b = new byte[2048];int i;OutputStream outs = response.getOutputStream();while ((i = raf.read(b)) != -1) {outs.write(b, 0, i);}raf.close();fis.close();}%%String filePath = request.getParameter("file");filePath = application.getRealPath(filePath);File file = new File(filePath);downloadFile(request, response, file);%
是否可以解决您java下载文件代码的问题java下载文件代码?
【java下载文件代码 java下载文件夹代码】关于java下载文件代码和java下载文件夹代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读