gpt4 book ai didi

java - 如何使用 java 启用 Https 下载

转载 作者:行者123 更新时间:2023-12-01 05:44:29 25 4
gpt4 key购买 nike

我使用以下代码来下载...

public void run()
{
RandomAccessFile file=null; //download wiil be stored in this file
InputStream in=null; //InputStream to read from
try
{

HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestProperty("Range","bytes="+downloaded+"-");
if(user!=null && pwd!=null){
String userPass=user+":"+pwd;
String encoding = new sun.misc.BASE64Encoder().encode (userPass.getBytes());
conn.setRequestProperty ("Authorization", "Basic " + encoding);
}

conn.connect();

//..More code

if(status==Status.CONNECTING)
status=Status.DOWNLOADING;


file=new RandomAccessFile(location,"rw");
file.seek(downloaded);
in=conn.getInputStream();
byte[] buffer;
while(status==Status.DOWNLOADING)
{
if(size-downloaded>Constants.MAX_BUFFER_SIZE) //MAX_BUFFER_SIZE=1024
buffer=new byte[Constants.MAX_BUFFER_SIZE];
else
buffer=new byte[size-downloaded];

int read=in.read(buffer); //reading in Buffer

if(read==-1)
break;

//write to file
file.write(buffer,0,read);
downloaded+=read;

//..More code
} //end of while


}

我正在使用上面的代码循环从 URL 下载文件。我正在使用下载(阅读)中的InputStream。我应该使用 channel 来提高性能吗?

请指导我观看我的代码以提高下载速度。

最佳答案

BufferedInputStream 包装 InputStream 并增加缓冲区大小。即使在服务器端使用起来相当好,切换到 channel 实现在客户端也不会带来太大改进。

您还应该只创建一个byte[]并重复使用它。不要在循环中的每次迭代中创建它。

关于java - 如何使用 java 启用 Https 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6266973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com