Mars老师Android视频第一季18集文件下载不成功的解决

来源:互联网 发布:淘宝抠图多少钱 编辑:程序博客网 时间:2024/05/18 02:00

 找bug之旅:

前几日看了Mars老师的Android视频第一季的第18集,文件下载,并实现了download的代码,开始自己写了的怎么也调不通,Tomcat的本地服务搭建也没有问题,网页都能访问得到,就是不下载,总是出异常,干脆下载了视频附带的代码,放到本地还是不行,后来放了几天,想到难道是?

因为有个印象,UI线程里不能下载文件,视频是很早的Android2.2版本,我用的是4.4的模拟器,可能升级了对这个要求高了?然后我就在原来的代码中新开的线程,就是点击下载按钮会新建一个Thread去下载LRC和MP3。这下可以下载了。太高兴了!

还有一个自己的问题,就是修改了原来代码中的创建文件部分,判断了一下返回值,但是由于粗心,一开始总是发现能成功创建文件,sd卡上有,但是大小是0,就是MP3

没下载成功,后来发现是自己多加的判断有问题。一开始的代码里写的是if(res),写反了,所以没写进去,修改后如下


public File createFile(String fileName) throws IOException{File file = new File(SDPATH + fileName);boolean res = file.createNewFile();if(!res){System.out.println("crearte failure! file aleady exists!");file = null;}System.out.println(res);return file;}
这个file.createNewFile函数的返回值的解释如下:

Returns:true if the file has been created, false if it already exists

也就是已经被成功创建就返回true,如果该文件已经存在就返回false。我一开始给弄反了,只看了前半句,以为文件已存在返回ture呢,太大意了,都不符合逻辑的返回值也不好好确认。

要完成本地服务器文件的简单搭建。


下面的代码是我对文件DownLoadActivity.java的修改,其余的两个文件HttpDownloader.java和FileUtils.java使用原来的代码就可以,按上图配置好本地的Tomcat就可以成功下载了!

package com.example.download;import com.example.utils.HttpDownloader;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;// 下载操作不能相爱主线程中作,否则会抛出异常,不能正常执行public class DownLoadActivity extends Activity {private Button txtBtn;private Button fileBtn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                txtBtn = (Button)findViewById(R.id.txtBtn);        txtBtn.setOnClickListener(new txtButtonListener());                fileBtn = (Button)findViewById(R.id.fileBtn);        fileBtn.setOnClickListener(new fileButtonListener());            }    class txtButtonListener implements OnClickListener{@Overridepublic void onClick(View v) {//HttpDownloader httpDownloader = new HttpDownloader();//String urlStr = "http://192.168.1.105:8080/voa1500/01.LRC";////String urlStr = "http://www.marschen.com/data1.html";//String lrc = httpDownloader.download(urlStr);//System.out.println(lrc);Thread wt = new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubHttpDownloader httpDownloader = new HttpDownloader();String urlStr = "http://192.168.1.105:8080/voa1500/01.LRC";//String urlStr = "http://www.marschen.com/data1.html";String lrc = httpDownloader.download(urlStr);System.out.println(lrc);}});// TODO Auto-generated method stubwt.start();}        }        class fileButtonListener implements OnClickListener{@Overridepublic void onClick(View v) {//HttpDownloader httpDownloader = new HttpDownloader();//String urlStr = "http://192.168.1.105:8080/voa1500/01.mp3";//String path = "voa/";//String fileName = "01.mp3";//int res = httpDownloader.downFile(urlStr, path, fileName);//System.out.println("res is " + res);// TODO Auto-generated method stubnew Thread(){public void run(){HttpDownloader httpDownloader = new HttpDownloader();String urlStr = "http://192.168.1.105:8080/voa1500/01.mp3";String path = "voa/";String fileName = "01.mp3";int res = httpDownloader.downFile(urlStr, path, fileName);System.out.println("res is " + res);}}.start();}        }}

下载成功,终于跟课上讲的一致了!!可以继续学习了






0 0
原创粉丝点击