关于使用HttpURLConnection下载大文件的一些问题 求大神指导

下面是我的函数
private void getFile() {
new Thread(new Runnable() {
@Override
public void run() {
synchronized (this) {
URL url = null;
InputStream inputStream = null;
FileOutputStream outputStream = null;
long fileSize = 0;
try {
url = new URL(downloadUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(28000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == 200) {
inputStream = connection.getInputStream();
File file = new File(Environment.getExternalStorageDirectory() + "/" + directoriy, filename);
outputStream = new FileOutputStream(file);
fileSize = connection.getContentLength();
int length = 0;
byte[] buffer = new byte[1024];
int downloadSize = 0;
while ((length = inputStream.read(buffer)) != -1) {
downloadSize = downloadSize + length;
progress[0] = downloadSize / (float) fileSize;

                            outputStream.write(buffer, 0, length);
                            handler.sendEmptyMessage(INVALIDATE1);
                        }
                        outputStream.flush();
                        outputStream.close();
                        handler.sendEmptyMessage(LOAD_SUCCESS1);
                    }
                } catch (MalformedURLException e) {
                    handler.sendEmptyMessage(LOAD_ERROR1);
                    e.printStackTrace();
                    e.getMessage();
                    try {
                        if (inputStream != null)
                            inputStream.close();
                        if (outputStream != null)
                            outputStream.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                } catch (IOException e) {
                    handler.sendEmptyMessage(LOAD_ERROR1);
                    e.printStackTrace();
                    if (inputStream != null)
                        try {
                            inputStream.close();
                        } catch (IOException e1) {
                            e1.printStackTrace();
                        }
                    if (outputStream != null)
                        try {
                            outputStream.close();
                        } catch (IOException e1) {
                            e1.printStackTrace();
                        }
                }
            }
        }
    }).start();

}

用上面的函数下载一个1个G的文件要改成POST方式吗?需要的话函数需要拿些改动呢,还有就是下载启动大文件之后对UI有很大的影响,列表直接卡住了,想请问用什么方法可以优化一下呢?

0

1个回答

下载是耗时操作,肯定要开启一条新的线程来做这件事啊

0
baidu_37299572
ZWate 不是已经规定了下载必须不在主线程里才行吗?我已经开启一个线程了呀,,,
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用HttpUrlConnection来下载文件信息
public class LoadToFile extends Activity implements View.OnClickListener { private static final String TAG = "LoadToFile"; private Button mBtn; private ImageView mImg; private String
使用HttpURLConnection下载网络文件
前言: 最近产品经理要分析用户的行为数据,于是让我将生产上的数据包都下载下来,用HttpURLConnection和Java的IO流,挺方便,下面简单介绍一下。 下载代码 public static void testDownLoad(){ BufferedInputStream bis =null; BufferedOutputStream bos...
HttpURLConnection上传大文件内存溢出问题
解决方法:httpConnection.setChunkedStreamingMode(0);//不使用HttpURLConnection的缓存机制,直接将流提交到服务器上。
Android移动开发-使用HttpURLConnection实现多线程的下载
实例Demo程序来示范使用HttpURLConnection实现多线程下载。 使用多线程下载文件可以更快完成文件的下载,因为客户端启动多条线程进行下载就意味着服务器也需要为该客户端提供响应的服务。假设服务器同时最多服务100个用户,在服务器中一条线程对应一个用户,100条线程在计算机内并发执行,也就是有CPU划分时间片轮流执行,如果A应用使用了99条线程下载文件,那么相当于占用了99个用户的资源,自然就拥有了较快的下载速度。
基于MFC ppi计算器
新手自己写的ppi计算器,开发环境:vs2010 win8.1 ,求指导,求大神指导
使用HttpURLConnection访问网络
使用HttpURLConnection访问网络1.在实际的开发应用中,绝大多数的APP都需要与网络进行数据交互,这就代表了要访问网络。 此时用到的HttpURLConnection对象就可以做到。 用法如下: URL url = new URL("http://itcast.cn"); //创建URL对象 // 根据url 发送 h
Android - HttpURLConnection下载网络文件,加载网络图片
说明: 做sdk开发的时候(sdk不采取任何第三方框架),涉及到下载网络文件,和加载网络图片的功能,由于不能用第三方jar包进行,所以只能用基本的HttpURLConnection把文件作为流来处理,进行下载和加载。 1、HttpURLConnection加载图片 代码: /** * 加载图片ImageView * @param url 图片网络地址
get和post请求(HttpUrlConnection、HttpClient、AsyncHttpClient)多线程下载,断点续传
get和post请求(HttpUrlConnection、HttpClient、AsyncHttpClient)多线程下载,断点续传
使用HttpURLConnection访问网络--android 第一行代码
在以前,Android发送HTTP请求一般有两种方式,HttpURLConnection和HttpClient。但是由于后者使用起来过于麻烦(API数量过多,扩展困难等),然后在Android6.0系统中,HttpClient功能完全被移除。 HttpURLConnection使用方法比较简单,步骤如下: 如果使用HttpURLConnection当然少不了先获取他的实例了。 实例获取成功之...
HttpURLConnection实现断点下载
package cn.demo; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; public class BreakDown { public s...
利用HttpURLConnection实现远程下载文件
最近做项目的时候要做一个下载功能,这个下载的文档在公司的其他服务器上也有,所以我开始时我并不想在本地服务器上存储文件,后来试过一次放在本地,本地环境是linux,测试的时候不知道为啥文档名是中文的时候程序总是报错,文档名也编码了,总之就是不知道为什么中文的不行,如果有大神知道请赐教。 后来还是尝试用HttpURLConnection远程下载文件,存储文件的那台服务器是windows。以下是部分源
通过HttpURLConnection连接上传文件和参数
通过HttpURLConnection链接上传文件和参数,核心代码及操作步骤 public static String uploadFile(String url, Map<String, String> params, File file) {         // 换行,或者说是回车         //final String newLine = "\r\n";        ...
HttpUrlConnection使用时遇到的问题
今天尝试了一下HttpUrlConnection的使用,碰到了一些问题: 1,浏览器能访问的网址,将其直接作为参数传入Url中也能访问,但是通过拼接的方式却访问不了了。找了好久的问题,发现通过get方式请求时在里面放入了空格,导致网址识别错误:http://192.168.191.3:8080/WebTest/OkHttpServlet?message=message=hello,welcome
android中使用HttpURLConnection实现多线程下载
HttpURLConnection下载HttpURLConnection下载步骤1,将要下载的路径封装成一个url对象(一定是可以下载的路径) 2,通过url获取conn,并设置conn的各种属性,最重要的是setRequestMethod("GET"); 3,判断code,如果是200,通过conn获取要下载的文件大小len 4,在本地创建一个RandomAccessFile文件,并设置长度 ra
http各种jar包
http的各种开发jar包
httpurlconnection从网络上获取一张图片并显示
通过httpurlconnection从网络上获取一张图片,图片没有压缩,不能太大
ios-DashboardBySwift.zip
github:https://github.com/coolboy-ccp/DashboardBySwift 求star,提供更详细的解释 目前无法解决渲染进度问题,求大神指导
求大神指导求大神指导求大神指导
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CSpeechRecognition1::CSpeechRecognition1(void)" (??0CSpeechRecognition1@@QAE@XZ),该符号在函数 "public: __thiscall main::main(class CWnd *)" (??0main@@QAE@PAVCWnd@@@Z) 中被引用rn1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall main::OnInitDiaLog(void)" (?OnInitDiaLog@main@@UAEHXZ)rn1>main.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall CSpeechRecognition1::~CSpeechRecognition1(void)" (??1CSpeechRecognition1@@UAE@XZ),该符号在函数 "public: virtual __thiscall main::~main(void)" (??1main@@UAE@XZ) 中被引用rn1>D:\tttttt\RecordSpeech\Debug\RecordSpeech.exe : fatal error LNK1120: 3 个无法解析的外部命令
HttpUrlConnection下载图片
使用HttpUrlConnection下载图片显示到ImageView上,使用HttpUrlConnection下载百度网页源码并显示在WebView上。
国务院关于积极推进“互联网+”行动的指导意见.pdf
国务院关于积极推动互联网+的意见,2015年国务院下发,
使用HttpURLConnection请求数据、上传文件、图片等
NetWorkUtils.java import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.util.Log; import ...
多线程的一些问题和回答
已知线程有五大状态 (图来自:https://blog.csdn.net/u012403290/article/details/64910926?locationNum=11&fps=1)新建状态:新建线程对象,并没有调用start()方法之前就绪状态:调用start()方法之后线程就进入就绪状态,但是并不是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状...
使用HttpURLConnection下载图片
使用HttpURLConnection下载图片
08cms房产门户系统7.1gbk源码
这个是7.1的源码,非常齐全,就是不会构架,求大神指导
安卓线程的使用
android中试用线程的几种方式,很简单。求大神指导一下。
qq游戏找茬破解
有很多冗余代码 不是专业人士 见谅 另外可能会出现无响应bug 求大神指导修改
求大神指导C语言中的一些问题
我想用C 编写一个程序 来讲一段故事,rn第一,例如 "请你输入您的名字 "rn "请你输入他的名字 "rn 如何先后显示出来rn第二 讲故事阶段 如何将汉字一个一个的打出来 rn求指导呀 各位师兄师姐们!可能是大叔姐姐们。。
求大神指导spring mybatis整合一些问题
[code=java]rn rn rn 未读rn 已读rn 其他rn rn $list.sendUid rn $list.receiverUid rn $list.title rn rn 查看 删除rn rn [/code]rn如上代码..我想的是,在运行的时候,把$list.sendUid 和$list.receiverUid 这2个uid,在去执行给换成对应表里边的name,如何实现?[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img]rn要不还得弄2表查询,得写实体类好麻烦....
qwt安装的一些问题求大神指导
include(D:/qt/qwt/qwt.prf)rnDEFINES *= QWT_DLLrnCONFIG += qwtrnrnLIBS += -L”C:/Qt/Qt5.6.0/5.6/msvc2013_64/lib” -lqwtrnINCLUDEPATH += C:/Qt/Qt5.6.0/5.6/msvc2013_64/include/QWTrnDEPENDPATH += C:/Qt/Qt5.6.0/5.6/msvc2013_64/include/QWTrnqwtAddLibrary(qwt)rnpro文件配置rn[img=https://img-bbs.csdn.net/upload/201608/22/1471800019_59135.png][/img]rn编译后显示:rn:-1: error: LNK1104: 无法打开文件“d.lib”
使用HttpURLConnection下载网络图片并显示
效果图如下: xml中代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" ...
国务院关于深化“互联网+先进制造业” 发展工业互联网的指导意见
当前,全球范围内新一轮科技革命和产业变革蓬勃兴起。工业互联网作为新一代信息技术与制造业深度融合的产物,日益成为新工业革命的关键支撑和深化“互联网+先进制造业”的重要基石,对未来工业发展产生全方位、深层次、革命性影响。工业互联网通过系统构建网络、平台、安全三大功能体系,打造人、机、物全面互联的新型网络基础设施,形成智能化发展的新兴业态和应用模式,是推进制造强国和网络强国建设的重要基础,是全面建成小康社会和建设社会主义现代化强国的有力支撑。为深化供给侧结构性改革,深入推进“互联网+先进制造业”,规范和指导我国工业互联网发展,现提出以下意见。
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
Android HttpUrlConnection 实现文件上传(含服务端)
Android HttpUrlConnection 实现文件上传(含服务端)分析原理首先实现文件上传肯定要通过Http Post 请求,因为Get 请求无法传输大文件。使用Post请求传输文件,则Http协议中包含如下两点的改变: 请求头中定义表单请求的格式,传输的大小。 请求体中传输数据。 请求头中定义表单请求的格式,传输的大小在请求头中,有两个参数Content-Type和Content-Len
国务院关于深化“互联网+先进制造业”发展工业互 联网的指导意见
国务院关于深化“互联网+先进制造业”发展工业互 联网的指导意见
彻底解决android用HttpUrlConnection与web服务器之间session保持问题
彻底解决android用HttpUrlConnection与web服务器之间session保持问题
国务院办公厅关于促进电子政务协调发展的指导意见
为进一步推动政府系统电子政务科学、可持续发展,逐步建立与政府履职相适应的电子政务体系,有效服务于创新政府、廉洁政府、法治政府建设,不断提升信息化条件下政府治理能力,经国务院同意,提出指导意见
《国家信息化领导小组关于我国电子政务建设指导意见》的通知 .doc
《国家信息化领导小组关于我国电子政务建设指导意见》的通知 .doc
关于lowtran7的使用问题,望大神指导
最近从本网站下载了Lowtran7及其使用说明,尝试着使用了一下,遇到了如下问题,希望有大神可以不吝赐教,谢谢!1、边界温度和IM无法输入2、选择大气模式为7(用户输入),且此时的IM为1,为什么在Card2C1(子卡2C的子卡)中不能自定义数据输入?3、大气层数(ML)的意义是什么?一般如何设置?4、大气廓线(M1-M6)可以从0调到6,这里的0-6又代表什么?5、当运行完成一次后,如何生成ta...
android使用HttpURLConnection实现带参数文件上传
文件上传是常见功能,然而android网上大多数的文件上传都使用httpclient,而且需要添加一个httpmine-jar,其实HttpURLConnection也可以实现文件上传,但是它在移动端有个弊端,就是不能上传大文件,所以这次说的方式,只能上传一些较小的文件。 文件上传,并且带上一些参数,这需要我们了解http请求的构造方式,也就是它的格式。 HttpURLConnection需要
使用HttpURLConnection的put或者post请求上传文件
HttpURLConnection为java本身提供的发送http请求的工具,今天遇到需要用put请求上传文件的需求,记录下: 首先分析下put请求的格式,使用postman的put请求发送一个文件,由于现在有springboot,实现一个接受put请求发送文件的服务器很简单,可以用来测试分析。 postman分析的请求如下: 首先上面一部分为请求头的数据,里面需要注意的点是Conten...