java多文件下载
‘壹’ 高分:用java实现服务器上多个文件先打包,然后下载,下载完成后删除包!
向压缩包里添加文件时直接把服务器上的文件用流读进来就行,不用非把文件放到同一个目录,用程序生成压缩包和用命令行工具是不一样的,不要想当然。 写了个示例程序,你可以参考一下。这个示例不使用临时文件,把 OutputStream os替换成你下载用的输出流就可以实现一边压缩一边下载。注意java.util.zip不支持非ascii文件名。想支持中文文件名可以用apache ant或其他的库。
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipTest {
public static void main( String[] args ) {
try {
writeZip();
} catch ( IOException e ) {
e.printStackTrace();
}
}
private static void writeZip() throws IOException {
String[] files = { "/ws/dir1/file1", "/ws/dir2/file2", "/ws/file3", "/pub/success.wav" };
OutputStream os = new BufferedOutputStream( new FileOutputStream( "/ws/archive.zip" ) );
ZipOutputStream zos = new ZipOutputStream( os );
byte[] buf = new byte[8192];
int len;
for ( String filename : files ) {
File file = new File( filename );
if ( !file.isFile() ) continue;
ZipEntry ze = new ZipEntry( file.getName() );
zos.putNextEntry( ze );
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( file ) );
while ( ( len = bis.read( buf ) ) > 0 ) {
zos.write( buf, 0, len );
}
zos.closeEntry();
}
zos.close();
}
}
‘贰’ java ftp连接一次下载多个文件
/**
*参考例子如下:
*@paramnamelist下载的文件列表
*@parampath下载路径
*@paramzipname压缩文件名称
*/
publicvoidzipDownloadFile(HttpServletResponseresponse,List<string>namelist,Stringpath,Stringzipname){
byte[]buf=newbyte[1024];
try{
//本地保存设置
response.addHeader("Content-Disposition","attachment;filename="
+URLEncoder.encode(zipname,sysEncoding)+".zip");
response.setContentType("application/x-zip-compressed");
//向本地写文件
ServletOutputStreamsos=response.getOutputStream();
ZipOutputStreamzipOut=newZipOutputStream(newBufferedOutputStream(sos));
for(Stringname:namelist){
ZipEntryentry=newZipEntry(name);
zipOut.putNextEntry(entry);
InputStreambis=this.getStream(path,name);
if(bis!=null){
intreadLen=-1;
while((readLen=bis.read(buf,0,1024))!=-1){
zipOut.write(buf,0,readLen);
}
bis.close();
}
}
zipOut.close();
}catch(Exceptione){
e.printStackTrace();
}
}</string>
‘叁’ 用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 = "https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/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 如何一次下载多个文件
创建多线程下载
如果说方便下载,是打包再下载
~~~~~~~~~~~~~~~~~~~~~~
‘陆’ Java 批量大文件上传下载如何实现
解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。
1)开发一个web插件。用于上传文件。
2)开发一个FTP工具,不用web上传。
3)用现有的FTP工具。
下面是几款不错的插件,你可以试试:
1)Jquery的uploadify插件。具体使用。你可以看帮助文档。
‘柒’ java下载多个文件浏览器弹出多个下载框
swing只会在服务器中弹出多用于桌面程序如果用在web中则在页面点击时选择框在服务器弹出 java 导出文件弹出下载框让用户选悉悉择路径销陆手 实现导亏嫌出文件...
‘捌’ 通过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", "www.trydone.com"); 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文件下载如何实现
在http协议下,实现下载一般就两种方法悄祥,一个采用cont-type="";此种方法为附件的方式下载;;
另一哗运档种较简单,就是你只需要点下载按钮然后跳转到服务器的那个文件路劲就可以了,浏览器自动乱乱回进行下载..
‘拾’ java response.getOutputStream()实现多个文件下载,已经拿到两个字节数组的list,下载的时候如何同时下载
可以一个接口传多个文件,每个文件中间用特定符号拆分,也可以写一个接口前端多次调用,将请求头的文件格式改为blob,前端获取文件流后调用下载