「java多任务下载文件」java 多文件下载
今天给各位分享java多任务下载文件的知识,其中也会对java 多文件下载进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java response.getOutputStream()实现多个文件下载,已经拿到两个字节数组的list,下载的时候如何同时下载?
- 2、java ftp连接一次下载多个文件
- 3、高分:用java实现服务器上多个文件先打包,然后下载,下载完成后删除包!
- 4、java 如何在多任务多线程下载中实现类似迅雷的'等待下载'的功能
- 5、某公司面试题java11使用并发多线程加速下载文件,如何写?
- 6、JAVA 如何一次下载多个文件
java response.getOutputStream()实现多个文件下载,已经拿到两个字节数组的list,下载的时候如何同时下载?
可以一个接口传多个文件,每个文件中间用特定符号拆分,也可以写一个接口前端多次调用,将请求头的文件格式改为blob,前端获取文件流后调用下载
java ftp连接一次下载多个文件
/**
* 参考例子如下:
* @param namelist 下载的文件列表
* @param path 下载路径
* @param zipname 压缩文件名称
*/
public void zipDownloadFile(HttpServletResponse response,Liststring namelist,String path,String zipname){
byte[] buf = new byte[1024];
try {
// 本地保存设置
response.addHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(zipname, sysEncoding)+".zip");
response.setContentType("application/x-zip-compressed");
// 向本地写文件
ServletOutputStream sos=response.getOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(new BufferedOutputStream(sos));
for (String name : namelist) {
ZipEntry entry = new ZipEntry(name);
zipOut.putNextEntry(entry);
InputStream bis = this.getStream(path, name);
if(bis!=null){
int readLen = -1;
while ((readLen = bis.read(buf, 0, 1024)) != -1) {
zipOut.write(buf, 0, readLen);
}
bis.close();
}
}
zipOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}/string
高分:用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 如何在多任务多线程下载中实现类似迅雷的'等待下载'的功能
在线程中使用wait可以实现线程的等待,如wait(1000)表示等待1000毫秒。
某公司面试题java11使用并发多线程加速下载文件,如何写?
先建一个用于下载文件的多线程类,通常要指明下载文件的位置(URL)和文件名以及保存到本地的路径
public class FileDownloader implements Runnable
{
private static File file;//要下载的文件
private static String url;//文件所在URL
private static File storagePath;//保存路径
public static void initialize(File file, String url, File storagePath)//初始化静态字段,初始化的代码不用我写吧
}
然后,指明同步块,目的是让各个线程共享一个文件资源,那样它们可以知道同一个文件的下载状况(即获取其他线程下载文件到哪个位置,以防重复下载)
public synchronized void fileDownload()//此方法用于下载文件,一般的Java程序员都会写,实在不会我可以帮你补上
或者
public void fileDownload(){
synchronized(file){
synchronized(url){
synchronized(storagePath){
}}}}//给每个字段加上同步块
run()方法的实现就以自己的喜好去写吧,只要里面调用了fileDownload()方法就行。
public void run(){
…
fileDownload();//下载文件
…
}
然后,在主类的main方法中创建一个多线程数组:
Runnable[] fds=new FileDownloader[线程数量];//fds为file_downloaders缩写
Thread[] threads=new Thread[线程数量];
最后使用循环把所有的线程逐一启动。
for(int i=0;i线程数量;i++){
threads[i]=new Thread(fds[i]);
threads[i].start();
}
JAVA 如何一次下载多个文件
创建多线程下载
如果说方便下载,是打包再下载
~~~~~~~~~~~~~~~~~~~~~~
java多任务下载文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 多文件下载、java多任务下载文件的信息别忘了在本站进行查找喔。