Android开发九:从网上下载文件并存储到SD卡中
2012-03-04 22:37
495 查看
今天接着学习android下载文件,这几天没有时间,要准备找工作了,还没有学好呢,而且白天还有别的事忙。代码的讲解就很少了,但是重要的部分都有注释的,也不难理解,因为这种情况,博客也不往首页挂了...
直接进入正题,布局文件里面有一个文本框用来输入网址,我写了个默认的放里边了,百度的LOGO。后面就是一个下载按钮
下面看代码就明白了,都注释上了
最后如果要正常运行的话,还要在AndroidManifest.xml文件中定义权限
没有什么难理解的这节,我下去继续学习...
哪位朋友给介绍个工作呗,要求北京,做android的,虽然我现在还没有学完,但是相信我,我有很强的学习能力,然后就是动手能力,谢谢了
直接进入正题,布局文件里面有一个文本框用来输入网址,我写了个默认的放里边了,百度的LOGO。后面就是一个下载按钮
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <EditText android:text="http://www.baidu.com/img/baidu_jgylogo3.gif" android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textUri"></EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/downbtn" android:layout_gravity="center" /> </LinearLayout>
下面看代码就明白了,都注释上了
package com.yyj.DownloadAndStore; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class DownloadAndStoreActivity extends Activity { /** Called when the activity is first created. */ Button button; EditText editText; URL url; //获取SDCard根目录 String sdcard=Environment.getExternalStorageDirectory()+"/"; //这个是要保存的目录 String filepath=sdcard+"yyjdownload/"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText=(EditText)findViewById(R.id.editText1); button=(Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { String urlString=editText.getText().toString(); //url字符串,如果前面不加http://会异常,这里不考虑ftp情况 urlString=(urlString.startsWith("http://"))?urlString:"http://"+urlString; try { url=new URL(urlString); //打开到url的连接 HttpURLConnection connection = (HttpURLConnection)url.openConnection(); //以下为java IO部分,大体来说就是先检查文件夹是否存在,不存在则创建,然后的文件名重复问题,没有考虑 InputStream istream=connection.getInputStream(); String filename=urlString.substring(urlString.lastIndexOf("/")+1); File dir=new File(filepath); if (!dir.exists()) { dir.mkdir(); } File file=new File(filepath+filename); file.createNewFile(); OutputStream output=new FileOutputStream(file); byte[] buffer=new byte[1024*4]; while (istream.read(buffer)!=-1) { output.write(buffer); } output.flush(); output.close(); istream.close(); //最后toast出文件名,因为这个程序是单线程的,所以要下载完文件以后才会执行这一句,中间的时间类似于死机,不过多线程还没有学到 Toast.makeText(DownloadAndStoreActivity.this, filename, Toast.LENGTH_LONG).show(); } catch (Exception e) { e.printStackTrace(); } } }); } }
最后如果要正常运行的话,还要在AndroidManifest.xml文件中定义权限
<!--连接网络的权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 写入存储卡数据的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
没有什么难理解的这节,我下去继续学习...
哪位朋友给介绍个工作呗,要求北京,做android的,虽然我现在还没有学完,但是相信我,我有很强的学习能力,然后就是动手能力,谢谢了
相关文章推荐
- Android开发九:从网上下载文件并存储到SD卡中
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- (转)【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android开发之下载Tomcat服务器的文件到模拟器的SD卡
- 【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android开发之下载Tomcat服务器的文件到模拟器的SD卡
- Android游戏开发13:SQLite存储数据及保存SQLite数据库文件到SD卡
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]
- android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库
- Android开发之下载文件
- Android(五)数据存储之五网络多线程断点下载-世事如棋,乾坤莫测,笑 ...  -  棒槌网@Android开发论坛 - Powered by
- android开发学习(二)——保存文件到手机内存和SD卡,文件访问权限,获取内存大小
- android下载文件,写入SD卡等
- android开发的文件存储地址选择