导航:首页 > 编程语言 > java线程下载文件

java线程下载文件

发布时间:2022-05-28 06:09:51

A. 某公司面试题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();
}

B. JAVA多线程下载东西为什么要先创建一个大小相同的空文件呢

读懂题目,再回答!
多线程下载,就是说:有多个人同时把A车上货物搬到B车上去。每个人就像一个线程。
如果不给每个人弄个与B车相同结构的车,那每个人搬的东西搬放方式或位置将不同,到时候,合起来的时候就会放上整齐,或放不满,放不下的问题。
试想,每个人都以B车的结构搬来货物,又以相同的方式摆放,只不过,各摆各的部分,合起来不就是完整的一车货物了吗?
说白了,还是数据结构的问题。优秀和合理的数据结构,使程序开发起来事半功倍。

C. Java语言多线程下载不同文件

这个其实很简单,重要的就是要建立 线程类,包含下载文件地址参数,以及具体下载配置,如果是ftp的话;
在一个就是构建线程池对下载的数量分配。具体的可以自己尝试开发下,别人咀嚼过的永远没有味道 ,即便给你标注好注释,过一阵子你也会忘记。

D. 请问你的java在线程里下载文件是怎么实现的线程这方面我不大懂

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
OutputStream o = response.getOutputStream();
byte b[] = new byte[1024];
// the file to download.
String directory = request.getParameter("csvLogDir");
String fileName = request.getParameter("csvLogName");
File fileLoad = new File(directory, fileName);
// the dialogbox of download file.
response.setHeader("Content-disposition", "attachment;filename="
+ fileName);
// set the MIME type.
response.setContentType("application/x-tar");
// get the file length.
long fileLength = fileLoad.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_Length", length);
// download the file.
FileInputStream in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
}

最简单的就是直接把a标签写成文件URL,哈哈哈,这个方法很淫荡的

E. java实现在线程里下载文件时,如何中断线程停止下载

线程设置一个变量,公开SET方法。当你想让它停下来。就能过这个方法传一个值。线程中判断是停止,那就停下来。

如果是timer,有停止方法。

F. 用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();
}
}

G. JAVA多线程下载问题

一般来讲。我会使用
synchronized(this){
this.wait();
}

synchronized(this){
this.notify();
}

H. java多线程下载比单线程慢!!

哥子
多线程不是说一定比单线程快,要看网络的稳定情况,还有多线程的运行过程其实也就是不同的时间段内使用CPU权限的分配,对于多线程是一般用于开起多个同时要使用的东西我感觉才有用,如果你只是用于一个程序的开起
你用多线程干什么呢?

I. java多线程下载的问题请教。

你书上的code和http://www.cnblogs.com/wanghui390/p/4046575.html 这个网址上的一样么?

如果一样的话,那么我觉得这么做的目的应该是:

fileSize/threadNum 的结果是四舍五入之后的结果,如果是舍去了一部分,那么按照这个网址上的code到最后就会有一点没有下载。所以它另每个filtePart的大小都增大1,并且在DownThread里面加入了另外一个条件:
length < currentPartSize && (hasRead = inStream.read(buffer)) > 0

就可以保证在文件的末尾,停止读操作。

J. 如何使用java做一个简单的窗体多线程下载器

用java swing做界面
java net来下载呗。。。

多线程的话 你可以先获取那个文件,然后就能得到 文件大小 字节数组,然后按照设定的线程数,线程1负责数组0---数组1000的字节下载,线程2负责数组1001到2000 以此类推
那么这里1000就是缓冲大小拉!

阅读全文

与java线程下载文件相关的资料

热点内容
单片机代码跳掉 浏览:447
程序员谈薪水压价 浏览:861
荣耀10青春版支持方舟编译啊 浏览:158
最优估计pdf 浏览:826
androiddrawtext字体 浏览:669
c语言源编辑源程序编译 浏览:821
手里捏东西真的可以解压吗 浏览:265
编译原理画状态表 浏览:28
用echo命令产生下列输出 浏览:360
在内网如何访问服务器 浏览:961
java导入oracle数据库 浏览:135
坚朗内开内倒铝条算法 浏览:259
华为阅读新建文件夹 浏览:770
幻塔如何选择服务器 浏览:221
解压先把文件压到系统盘 浏览:823
access压缩和修复数据库 浏览:791
光纤交换机命令 浏览:513
白色桌放什么文件夹 浏览:296
分治算法思想 浏览:151
s曲线加减速算法 浏览:403