public class FileDownloadActivity extends AppCompatActivity { public String url="http://112.124.22.238:8081/course_api/css/net_music.apk"; public String fileName="net_music.apk"; @BindView(R.id.btn_file) Button btnFile; @BindView(R.id.progressbar) ProgressBar progressbar; private OkHttpClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_download); ButterKnife.bind(this); initClient(); } private void initClient() { client=new OkHttpClient(); } @OnClick(R.id.btn_file) public void onViewClicked() { downloadFile(); } private void downloadFile() { Request request=new Request .Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("aaaaaaaa:1 ","文件出差" ); } @Override public void onResponse(Call call, Response response) throws IOException { writeFile(response); } }); } Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what==1){ int progress=msg.arg1; progressbar.setProgress(progress); } } }; private void writeFile(Response response) { InputStream is=null; FileOutputStream fos=null; is=response.body().byteStream(); // 获取存储路径 String path= Environment.getExternalStorageDirectory().getAbsolutePath(); File file=new File(path,fileName); try { fos=new FileOutputStream(file); byte[] bytes=new byte[1024]; int len=0; long contentSize=response.body().contentLength(); long sum=0; while ((len=is.read(bytes))!=-1){ fos.write(bytes); sum+=len; int progress= (int) ((sum*1.f/contentSize)*100); Message msg=mHandler.obtainMessage(1); msg.arg1=progress; mHandler.sendMessage(msg); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { if (is!=null){ is.close(); } if (fos!=null){ fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
通过Handler进行文件下载(出自菜鸟窝)
猜你喜欢
转载自blog.csdn.net/y1361408906/article/details/80306983
今日推荐
周排行