文件管理 · 2024年2月10日

java文件下载代码|用java实现文件的下载如何提高下载速度(非web开发)

㈠ java文件下载怎么实现的

下载就很简单了把你要下载的文件做成超级链接,可以不用任何组件比如说下载一个word文档<a href="名称.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 = "http://www.7cd.cn/QingTengPics/倩女幽魂.mp3";//MP3下载的地址 String path ="http://img.99luna.com/music/%CF%EB%C4%E3%BE%CD%D0%B4%D0%C5.mp3"; 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 下载文件的方法怎么写

参考下面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();// 清空responseresponse.reset();// 设置response的Headerresponse.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("file:///" + 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 FTP下载文件在代码中如何实现知道下载完成

(KmConfigkmConfig,StringfileName,StringclientFileName,OutputStreamoutputStream){try{StringftpHost=kmConfig.getFtpHost();intport=kmConfig.getFtpPort();StringuserName=kmConfig.getFtpUser();StringpassWord=kmConfig.getFtpPassword();Stringpath=kmConfig.getFtpPath();FtpClientftpClient=newFtpClient(ftpHost,port);//ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。ftpClient.login(userName,passWord);//userName、passWord分别为FTP服务器的登陆用户名和密码ftpClient.binary();ftpClient.cd(path);//path为FTP服务器上保存上传文件的路径。try{TelnetInputStreamin=ftpClient.get(fileName);byte[]bytes=newbyte[1024];intcnt=0;while((cnt=in.read(bytes,0,bytes.length))!=-1){outputStream.write(bytes,0,cnt);}//##############################################//这里文件就已经下载完了,自己理解一下//#############################################outputStream.close();in.close();}catch(Exceptione){ftpClient.closeServer();e.printStackTrace();}ftpClient.closeServer();}catch(Exceptione){System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");}}

㈣ 用java实现文件的下载,如何提高下载速度(非web开发)

下面贴出的代码是一个简单的读取远程文件保存到本地的实现,至于提高下载速度你可以利用多线程,具体可参考最下面的那个网址——import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;public class DownloadTester { public static void main(String[] args) throws IOException { String urlStr = "http://img..com/img/logo-.gif"; String path = "D:/"; String name = urlStr.substring(urlStr.trim().lastIndexOf("/")); URL url = new URL(urlStr); InputStream in = url.openConnection().getInputStream(); File file = new File(path + name); FileOutputStream out = new FileOutputStream(file, true); int counter = 0; int ch; byte[] buffer = new byte[1024]; while ((ch = in.read(buffer)) != -1) { out.write(buffer, 0, ch); counter += ch; System.out.println(counter + ":byte"); } out.flush(); in.close(); out.close(); }}

㈤ 怎样编一个能实现文件下载功能的JAVA程序

java实现文件下载一、采用RequestDispatcher的方式进行1、web.xml文件中增加<mime-mapping> <extension>doc</extension> <mime-type>application/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> <extension>doc</extension> <mime-type>application/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文件

搞那么复杂..直接把#变成.doc文件的相对路径就行了…

㈦ 用java下载指定路径下的文件夹,下载内容包含指定文件夹及其包含的文件夹子文件!!!

public static void main(String[] args) throws InterruptedException { // 指定文件夹File file = new File("D:\\downloads\\");List<File> fileList = null;// 包含字符String filter = "j";if (file != null) {if (file.isDirectory()) {File[] fileArray = file.listFiles();if (fileArray != null && fileArray.length > 0) {fileList = new ArrayList<File>(); // 包括文件,文件夹的判断for (File f : fileArray) {String fileName = f.getName();if (fileName.indexOf(filter) != -1) {fileList.add(f);}}}} else {System.out.println("Not Directory.");}}if (fileList != null && fileList.size() > 0) {for (File f : fileList) {System.out.println(f.getName());}}}希望对你有所帮助。。。

㈧ 用Java的三大框架实现文件的上传下载,求代码啊,最好是分为action,service,serv

package cn.itcast.struts2.demo1;import java.io.File;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 完成文件上传 (不是解析上传内容,因为上传内容 由fileUpload拦截器负责解析) * * @author seawind * */public class UploadAction extends ActionSupport {// 接收上传内容// <input type="file" name="upload" />private File upload; // 这里变量名 和 页面表单元素 name 属性一致private String uploadContentType;private String uploadFileName;public void setUpload(File upload) {this.upload = upload;}public void setUploadContentType(String uploadContentType) {this.uploadContentType = uploadContentType;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}@Overridepublic String execute() throws Exception {if (upload == null) { // 通过xml配置 required校验器 完成校验// 没有上传文件return NONE;}// 将上传文件 保存到服务器端// 源文件 upload// 目标文件File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload") + "/" + uploadFileName);// 文件复制 使用commons-io包 提供 工具类FileUtils.File(upload, destFile);return NONE;}}多文件上传package cn.itcast.struts2.demo1;import java.io.File;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 支持多文件上传 * * @author seawind * */public class MultiUploadAction extends ActionSupport {// 接收多文件上传参数,提供数组接收就可以了private File[] upload;private String[] uploadContentType;private String[] uploadFileName;public void setUpload(File[] upload) {this.upload = upload;}public void setUploadContentType(String[] uploadContentType) {this.uploadContentType = uploadContentType;}public void setUploadFileName(String[] uploadFileName) {this.uploadFileName = uploadFileName;}@Overridepublic String execute() throws Exception {for (int i = 0; i < upload.length; i++) {// 循环完成上传File srcFile = upload[i];String filename = uploadFileName[i];// 定义目标文件File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload" + "/" + filename));FileUtils.File(srcFile, destFile);}return NONE;}}

㈨ 怎样通过java实现服务器上文件下载

用HttpClient(commons httpclient)包,模拟一个Get请求,发送到网址172.16.30.230/文件地址。这个文件地址不能是E/Map/123.txt,必须是暴露在服务专器属中的应用里的。就像你写的应用里的一个jsp页面的目录。成功发送get请求后,就会得到response,里面有流。就是你下载的文件,然后可以通过FileOutputStream,指定你输出目录,写到磁盘上。

㈩ uc云盘存的视频不能看了,什么时候才能恢复下载播放哪!

这个已经恢复了,之前那段时间是官方在整理和修复所以无法观看。

UC网盘是一款基于UC浏览器的云存储服务,提供手机用户数据存储,管理和分享等功能。覆盖了android,symbian,java,wp,iphone等主流的手机平台,利用UC网盘,手机用户可以安全备份手机本地数据,免流量下载网络资源和论坛分享文件。

文件中转

文件中转站是UC推出的一项文件临时存储服务,享有较大的存储空间。结合浏览器的离线下载功能,方便用户下载网络资源,在过程中为用户节省时间,节约流量。普通用户享受4G免费空间和7天的文件保存期限。