您的位置:首页 > 移动开发 > Android开发

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

2014-11-15 23:07 387 查看
找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{
@Override
public 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(){

@Override
public void run() {
// TODO Auto-generated method stub
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);
}

});
// TODO Auto-generated method stub
wt.start();
}

}

class fileButtonListener implements OnClickListener{

@Override
public 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 stub
new 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();

}

}

}


下载成功,终于跟课上讲的一致了!!可以继续学习了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: