1、使用HTTP下载文件

文件下载的步骤:

1》创建一个HttpURLConnection对象

HttpURLConnection urlConn = (HttpURLConnection)url.openConnection()

2》获得一个InputStream对象

urlConn.getInputStream()

3》访问网络的权限

android.permission.INTERNET

2、将下载的文件保存到SDCARD

1》得到当前设备SD卡的目录

Environment.getExternalStorageDirectory()

2》访问SD卡的权限

android.permission.WRITE_EXTERNAL_STORAGE

注意:

在调试视频中的程序时候,我遇到两个主要问题,这两个问题均可以通过LogCat的日志直接看出来。

1、没有在AndroidManifest.xml添加访问权限

不报错,但是在LOG中可以看出不能访问INTERNET或者SDCARD

2、LOG中出现java.io.IOException: No such file or directory错误

没有找到什么解决方法,google一番,发现引起这个原因很多,比如拿我自己来说吧,我在获取SDCARD路径时候,使用代码自动完成把 SDPATH = Environment.getExternalStorageDirectory()+ File.separator;

误写成  SDPATH = Environment.getExternalStorageState() + File.separator;搞了半天才发现代码就错了。

以下是网上找的应该注意的地方:

就说这个错误吧,很明白啊,没有这个文件或者是目录,可是明明自己创建了为什么还会提示没有呢,就让人郁闷了,这个错误呢,确实是因为

自己写错了,很可能不小心一个单词或者一个语句,它就会认不出来,所以呢,我们应该注意,下面我说几点要注意的地方:

首先呢获得sdcard的路径要这样获得:
Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator;
不要这样写:
Environment.getExternalStorageDirectory().getAbsolutePath()+“/”;
这样写有可能出错。

其次呢创建目录的时候要这样写:
//创建目录
File dir = new File(SDPATH+dirName+File.separator);
不要这样写:
File dir = new File(SDPATH+dirName+”/”);

最后当目录和文件名链接的时候要这样写
File file = new File(SDPATH+dirName+File.separator+fileName);
不要这样写
File file = new File(SDPATH+dirName+“/”+fileName);

大 家肯定都注意到了File.separator,肯定会问,这个是干什么的呀,很多人应该知道,这里我简单的说一下,separator是File类中的 一个静成员变量,他会跟据不同的系统显示不同的分隔符,因为android是基于linux的,所以说 / 和File.separator是有区别的。所以我们要写这个而不能直接写 / .

3、就是我们使用本地127.0.0.1服务时候,LOG中出现:connection refused

GOOGLE一下,直接找到答案:

“ 问题是这样的,android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!

如果你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP 10.0.2.2 吧,  10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias

记住,在模拟器上用10.0.2.2访问你的电脑本机。”