1、就是你使用的方式,多段读取(其实就是断点续传的原理),多个袭晌请求,每个空禅郑请求请求一部分,如果你觉得效率低可以从斗颂两方面优化:
(1)不要用URLConnecion,而使用HttpClient之类的工具包进行请求
(2)使用多线程并发请求,其实就是断点续传了,迅雷就是几个线程一起下嘛
2、只请求一次,请求全部的,将全部流缓存到内存中(byte[]),然后根据你的需要分段截取,写入文件
import java.io.*
import java.net.*
import java.util.Scanner
public class Test {
private static String fileName="http://localhost/file/1.jpg"
public static void main(String args[]) throws Exception 姿帆者{
URL url=new URL(fileName)
URLConnection uc=url.openConnection()
uc.connect()
HttpURLConnection huc=(HttpURLConnection)uc
if(huc.getResponseCode()!=HttpURLConnection.HTTP_OK){
//判断是否成功连接到http,如果不能连接则返回
System.out.println("can't connect")
return
}
File f=new File("D://text.jpg")//把文件复制到D盘的text.jpg中
InputStream in=(uc.getInputStream())//打开输入流
byte[] data=new byte[1024*10]
int l=in.read(data)
if(!f.exists()) 轿并f.createNewFile()
FileOutputStream out=new FileOutputStream(f)
while(l!=-1){
out.write(data, 0, l)
l=in.read(data)
}
out.flush()
out.close()
System.out.println("OK")
}
}
自己把源地址修改下迹薯
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)