发生FileNotFoundException错误
package com.imooc.administrator.handlertest; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ProgressBar; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class DownloadActivity extends AppCompatActivity { private Handler handler; ProgressBar progressBar= (ProgressBar) findViewById(R.id.progressBar); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_download); /* 异步下载文件更新进度条的步骤 主线程 点击按键 发起下载 开启子线程下载 下载完成后通知主线程 主线程更新进度条 */ findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //建立子线程 new Thread(new Runnable() { @Override public void run() { download("http://download.sj.qq.com/upload/connAssitantDownload/upload/MobileAssistant_1.apk "); } }).start(); } }); handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 10001: progressBar.setProgress((Integer)msg.obj); break; case 10002: } } }; } private void download(String appUrl) { try { URL url=new URL(appUrl); URLConnection urlconnection=url.openConnection(); InputStream inputStream=urlconnection.getInputStream(); //获取文件的总长度 int contentLength=urlconnection.getContentLength(); /* Environment.getExternalStorageState()获取扩展存储设备的文件目录 然后创建文件名 */ String downloadFolderName= Environment.getExternalStorageState() + File.separator+"imooc"+File.separator; //建立新文件夹 File file=new File(downloadFolderName); //判断是否文件夹是否存在 if(!file.exists()){ file.mkdir(); } //文件名 String fileName=downloadFolderName+"imooc.apk"; //创建文件 File apkFile=new File(fileName); //判断文件是否存在,如存在先删除 if(apkFile.exists()){ apkFile.delete(); } if(file!=null){ Log.i("TAG","文件简历成功"); } int downloanSize=0;//进度数 // byte[] bytes=new byte[1024]; int length=0; //将数据写入fileName OutputStream outputStream=new FileOutputStream(fileName); while ((length=inputStream.read(bytes))!=-1){ outputStream.write(bytes,0,length); downloanSize+=length; Message message=Message.obtain(); message.obj=downloanSize*100/contentLength; message.what=10001; handler.sendMessage(message); } //关闭数据 inputStream.close(); outputStream.close(); } catch (MalformedURLException e) { Message message2=Message.obtain(); message2.what=10002; handler.sendMessage(message2); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
29
收起
正在回答 回答被采纳积分+1
2回答
Android网络操作与数据存储2018版
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星