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

 找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();

		}
    	
    }


}

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






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值